2012年6月24日

[转] 定义、注册和实现 GObject 类的子类

摘要: 定义 GObject 的子类· instance 结构:包含于类的实例相关的域,相当于 C++ 中的非静态公共成员。 · class 结构:包含的域相当于 C++ 中的静态公共成员。 · 私有成员在哪里定义? 与 C++ 不同,私有成员不是直接定义在类的声明中的(你甚至找不到一个到私有数据的指针)。GObject 的私有数据是在 class 结构初始化的时候,通过调用 g_typ_class_add_private 函数来指定的,这个函数只是指定私有数据的大小,类型系统在分配 instance 的时候会预留指定大小的空间供类实现作为私有数据使用。 · 例 阅读全文

posted @ 2012-06-24 17:28 高原 阅读(702) 评论(0) 推荐(0)

[转] GType 类型系统的功能

摘要: GType 类型系统的功能GType 主要提供了以下几个功能:· 基本类型 · 类和接口 · 查看类型信息,如父类、子类和实现的接口列表 · 类型的向上和向下转换,类型检查 基本类型所谓基本类型是指系统自动提供的,无须用户自己定义的类型。GType 定义了19种基本类型:(1) #define G_TYPE_INTERFACE G_TYPE_MAKE_FUNDAMENTAL (2) #define G_TYPE_CHAR G_TYPE_MAKE_FUNDAMENTAL (3) #define G_TYPE_UCHAR G_TYPE_MAKE_FUNDAM 阅读全文

posted @ 2012-06-24 17:00 高原 阅读(1375) 评论(0) 推荐(0)

[转] Android FrameWork——Touch事件派发过程详解

摘要: 对于android的窗口window管理,一直感觉很混乱,总想找个时间好好研究,却不知如何入手,现在写的Touch事件派发过程详解,其实跟android的窗口window管理服务WindowManagerService存在紧密联系,所以从这里入手切入到WindowManagerService的研究,本blog主要讲述一个touch事件如何从用户消息的采集,到WindowManagerService对Touch事件的派发,再到一个Activity窗口touch事件的派发,并着重讲了Activity窗口touch事件的派发,因为这个的理解对我们写应用很好地处理touch事件很重要一.用户事件采集到 阅读全文

posted @ 2012-06-24 16:23 高原 阅读(362) 评论(0) 推荐(0)

[转] GObject对象系统

摘要: 前言 大多数现代的计算机语言都带有自己的类 .. 前言大多数现代的计算机语言都带有自己的类型和对象系统,并附带算法结构。正象GLib提供的基本类型和算法结构(如链表、哈希表等)一样,GObject的对象系统提供了一种灵活的、可扩展的、并容易映射(到其它语言)的面向对象的C语言框架。它的实质可以概括为: 一个通用类型系统,用来注册任意的、轻便的、单根继承的、并能推导出任意深度的结构类型的界面,它照顾组合对象的定制、初始化和内存管理,类结构,保持对象的父子关系,处理这些类型的动态实现。也就是说,这些类型的实现是在运行时重置和卸载的;一个基本类型的实现集,如整型,枚举型和结构型等;一个基本对象体系之 阅读全文

posted @ 2012-06-24 16:21 高原 阅读(345) 评论(0) 推荐(0)

[转] GTYPE类型系统分析

摘要: 刚开始接触GLib库时,对GLib传统的习惯和特有的概念不熟悉,在编写基于GLib的程序时总是很不顺手,心中很是不爽。后来随着写的代码多了,渐渐熟悉了GLib的这些术语、概念、编码风格,情况好多了。但对GLib的类型系统还是不大清楚,只不过是照葫芦画瓢学的不错而已,对基于GType的使用在较深入时还是一知半解。最近有了些空余时间,于是去仔细看了GType相关的代码,总算弄得比较清楚了。记录在此,以便查阅,有不对之处,请高手指正。Gtype提供了GLib的数据类型系统和数据类型定义,是GObject对象系统的基础。GLib定义了一些基本数据类型,并允许用户定义一些基本类型的派生类型,还可以定义动 阅读全文

posted @ 2012-06-24 16:19 高原 阅读(461) 评论(0) 推荐(0)

2011年4月21日

VC里嵌汇编,获取寄存器的值

摘要: 1、拷贝eax的值int cur_eax;__asm{ mov cur_eax, eax // 将eax放到num变量中}2、获取eip的值: eip寄存器没法直接获取,但可以用其他方法得到int cur_eip;__asm{ push eax_LABEL_: lea eax, _LABEL_ mov cur_eip, eax pop eax} 阅读全文

posted @ 2011-04-21 19:42 高原 阅读(987) 评论(0) 推荐(0)

2011年4月20日

[转] 使用dbghelp获取调用堆栈--release下的调试方法学

摘要: 当软件作为release模式被发布给用户时,当程序崩溃时我们很难去查找原因。常见的手法是输出LOG文件,根据LOG文件分析程序崩溃时的运行情况。我们可以通过SEH来捕获程序错误,然后输出一些有用的信息作为我们分析错误的资料。一般我们需要输出的信息包括:系统信息、CPU寄存器信息、堆栈信息、调用堆栈等。而调用堆栈则是最有用的部分,它可以直接帮我们定位到程序崩溃时所处的位置(在何处崩溃)。(codeproject上关于这个专题的常见开场白 = =#)要获取call stack(所谓的调用堆栈),就需要查看(unwind)stack的内容。We could conceivably attempt t 阅读全文

posted @ 2011-04-20 19:13 高原 阅读(533) 评论(0) 推荐(0)

2011年4月8日

[转] 探索Win32系统之窗口类(Window Classes in Win32)

摘要: 翻译说明: 以前一直没有很在意窗口类的使用,我近期在用vc做一些界面时遇到窗口类定义的概念,这次翻MSDN的时候看到了一篇文章,讲到窗口类的一些基本概念,匆匆看完,翻译出来当学习笔记,可能有一些细节上的谬误,请包涵。放在网上,如果大家觉得值得参考,就看看。 在MFC编程里,窗口类的概念接触的已经比较少了,在SDK编程的时候则至少还需要声明一个WNDCLASS(EX)类RegisterClass(Ex)一下。但是窗口类在windows中是无所不在的,虽然不是很深奥的东西,了解一下其中细节,个人觉得对编程应该是有好处的。vcbear翻译 vcbear@163.com <正文>探索Win 阅读全文

posted @ 2011-04-08 12:08 高原 阅读(1112) 评论(0) 推荐(1)

2011年3月17日

[转] 编译器开关参数集

摘要: VC的编译开关参数大全 可以通过Settings -->Project-->C/C++-->Customize来设置这个编译开关。VC 编译命令开关/C: 在预处理输出中保留注释语句/c: 只编译,不连接,相当于在"Build"菜单下选择了"Compile"/D: 定义常量和宏,与源程序里的#define 有相同效果/E:预处理C、C++源文件,将源文件中所有的预编译指令及宏展开,将注释去掉,然后将预处理器的输出拷贝至标准输出设备输出,并且在每个文件的开头和末尾加入#line/EH: 指定编译器用何种异常处理模型/EP: 同/E,只是去 阅读全文

posted @ 2011-03-17 08:40 高原 阅读(262) 评论(0) 推荐(0)

2011年3月8日

[转] Nano-X的详细介绍

摘要: 前 言 nano- X是一个著名的开放式源码嵌入式GUI 软件,目的是把图形视窗环境引入到运行Linux 的小型设备和平台上。nano-X使用了分层设计的思想,可移植性非常好,nano-X 的图形引擎能够运行在任何支持readpixel,writepixel,drawhorzline, drawvertline 和setpalette 的系统之上,在底层函数的支持之下,nano-X 支持新的Linux内核帧缓存结构,并基于framebuffer来实现图像的绘制。nanox应用程序运行时占用的资源较少,server只有100多K,精巧的设计并不代表功能的简陋,目前提供每像素1、2、4、8、16、 阅读全文

posted @ 2011-03-08 19:33 高原 阅读(3409) 评论(0) 推荐(0)

导航