level 7
1, 应用程序中的“窗口”概念
从程序设计人员的角度看,窗口就是一个GUI句柄,以这个句柄作为一系列API函数的参数,就可以对窗口进行各种操作。MFC一般把窗口句柄封装成了一个CWnd的类,因此,对MFC程序员来说,窗口就是一个CWnd的对象。
从操作系统的角度看,窗口就是内存中的一块普通的内存。在这个内存中保存了一个叫WNDCLASS的结构体类型数据结构。所以说窗口的实质就是一个窗口结 构类型的实例,系统通过返回窗口句柄给应用程序,应用程序通过窗口句柄操作这个窗口。所以为了操作窗口,需要向Win32 API函数传递表示该窗口的句柄,MFC提供一个类CWnd来封装窗口的HWND句柄,并把与窗口相关的操作封装到CWnd类的各个成员函数中。
2018年07月07日 10点07分
1
level 7
窗体是通过响应WM_PAINT消息进行绘图的。当窗口的可见区域发生变化的时候,比如进行了最大化,移动等操作之后,系统就发送该消息以通知窗体需要绘制。而系统通过调用UpdateWindow或者RedrawWindow也能直接想窗口发送WM_PAINT消息。
2018年07月07日 10点07分
2
level 7
2, CObject类
CObject类提供了一些公共服务:包括支持序列化,支持运行时提供类信息,支持动态创建以及支持对象诊断输出等,所以凡是从CObject类继承的类都有这些功能。
2018年07月07日 10点07分
4
level 7
2.1 诊断功能
C Object类其中的Dump()和AssertValid()成员函数提供了诊断功能。Dump()成员函数为类的内容提供调试输出; Dump()成员函数为const类型的成员函数,因此它不能改变对象的数据。
2018年07月07日 10点07分
5
level 7
AssertValid()成员函数提供了自定义测试以验证类对象的数据成员的一致性。也就是提供对对象内部状态的运行时检查。该成员函数只在调试的时候有用,也是const类型的成员函数,因此它不能改变对象的数据。
CObject类中的AssertValid()成员函数仅能断言(assert)当前的对象不为NULL。尽管从CObject派生类的时候,不需要重 写AssertValid(),但是可以通过重写使自己的类更安全可靠。AssertValid()应该在对象的所有成员变量上执行断言,以验证它们包含 有效数值。触发了断言说明了指示的对象一定有错误,并且执行将暂停,然而,缺少断言指示未找到任何问题,但并不能保证对象是好的。
2018年07月07日 10点07分
6
level 7
2.2 运行时类信息
CObject类支持运行时提供其类的信息。通过其中的IsKindOf()成员函数,可以确定对象是属于指定类还是从指定类派生。
CObject类支持运行时提供其类的信息,是通过一个很重要的结构完成CRuntimeClass(这是一个结构)
CRuntimeClass提供了C++对象的运行时候的类的信息,比如ASCII类名,基类的CRuntimeClass,对象的大小,构造函数等信 息,此外还提供了一组成员函数用来动态创建对象,确定对象的类型等。因此有了对象的大小,构造函数等信息,就可以动态的创建对象了,这需要用结构 CRuntimeClass中的成员函数CreateObject()。
2018年07月07日 10点07分
7
level 7
另外,结构体CRuntimeClass还维持了指向基类的CRuntimeClass指针,这样,按照类的派生关系就构成了CRuntimeClass 链表。从而通过查找该链表中是否有指定的CRuntimeClass,可以判断给定的类是否从某个类派生。这需要用CRuntimeClass的成员函数 中的IsDerivedFrom()。通过结构体CRuntimeClass中的静态成员变量m_pNextClass,MFC为每个模块(EXE应用程 序)维护了一个全局的CRuntimeClass链表,这个链表保存在模块的状态中。
但是要注意,一般并不直接在类中使用CRuntimeClass,而是通过一组宏将CRuntimeClass引入到类中,并添加相应的成员。
2018年07月07日 10点07分
8
level 7
一年精通MFC其实很难的,一个人学习编程是很枯燥的,编程需要自己动手操作,站在岸上永远学不会游泳。我自己已经工作多年,现在工资20K养家糊口没问题。自己创建了一个2000人的群所有志同道合的人都可以加进去,交流学习,我这么多年也积攒了很多资料,想要的。我会发给你,进群我会私聊你需要什么资料的 qq群710520381,记得带上邀请码(柳猫),实在是不希望打广告和骗子进去
2018年07月07日 10点07分
10
level 7
俄罗斯虽败犹荣,我们每个人都应该像老毛子一样,用尽全力活下去!
2018年07月08日 02点07分
14
level 7
交流学习,我这么多年也积攒了很多资料,想要的。我会发给你,
2018年07月08日 04点07分
18