2013年3月25日MFC学习笔记

1.某视频第二集,前两天看的了。。。现在回忆加总结。

2.C++创建窗口程序的过程:1)设计窗口类2)注册窗口类3)产生窗口4)显示更新窗口

在MFC中其实过程也是如此,只不过MFC把很多常用的程序封装起来,我们看不到罢了。

新建一个MFC.exe工程,编译一下,在class view中可以看到五个类CNewApp、CNewDoc、CMainFrame、CNewView和CNewAbout(New为创建MFC时的窗口名称)。

最后一个类可以忽略,先不讨论。前四个类,都跟窗口有关,发个图。


好像有点太大了。。。凑合一下。这是new的MFC编译运行的窗口程序。MF(MainFrame类)指的是整个窗口的框架;Doc是指的中间空白文档程序类;第三个view是视类,指窗口如何显示(笔记上有一句话“View类窗口是覆盖在框架类窗口之上的”,忘记是怎么写下这句的,暂且记下)。而第一个类CNewApp是窗口初始化,将框架类、文档类和视类结合在一起。

3.上面说了MFC程序的大概原理,可以先理解一下。

在MSDN中,随便输入一个类,在最下面都可以找到一个类继承图表“hierarchy chart”,在图表中可以查看C++中各个类的继承派生关系。


由图表可以看到,所有的类都是由CObject派生出来,各种继承派生关系可以在里面找到。

(微软提供的MFC源代码路径:C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC)

4.在这里参考下程序员之家的一篇文章中的内容http://www.sunxin.org/

应用程序执行时,Windows自动调用应用程序框架内部的WinMain函数。WinMain函数会查找该应用程序的一个全局构造对象,这个对象是由CWinApp派生类构造的,有且只有一个。它是一个全局对象,因此在程序启动时,它就已经被构造好了。

  随后,WinMain将调用这个对象的InitApplicationInitInstance成员函数,完成应用程序实例的初

始化工作。随后,WinMain调用Run成员函数,运行应用程序的消息循环。

以上要注意几点:1)全局变量或对象在调用入口函数之前就已经有了值或已经分配好了内存空间。

2)在窗口程序中,有一个CNewApp实例化的全局对象,此对象有且仅有一个。

3)Afx函数(Application Frame应用程序类框架函数)

5.父类与子类,构造函数必须同时有参或同时无参;但当父类构造函数中的参数是固定值时,子类构造函数无需传递参数。

6.整个MFC程序初始化完成后进入到消息循环,就会一直在消息循环中进行了。

7.在看了这两集视频之后,再回去看《Visual C++6.0 从入门到精通》中P16页的那个hello程序,感觉懂了不少。重新码了一遍,上周愣是没编译成功;刚刚耐着性子凭错误找百度,结果是工程设置的问题。这是其中一个错误nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex,Microsoft Foundation Class不知道什么时候设置的是“No Use MFC”,修改为使用静态链接库就OK了。

跟VC自动生成的MFC程序对比,很多一致的地方。比如都有一个App派生类和Frame派生类,都有一个App类实例化的全局对象。

App派生类重写了InitInstance函数,在该函数中实例化了Window类;在实例化Window类时会调用Window类的构造函数,从而创建窗口;然后显示窗口、更新窗口。

(return TRUE;是指从控件传给变量值。老是搞不泠清TRUE跟FALSE。)

8.创建窗口函数中的CRect(int l,int t,int r,int b);这几个参数分别指窗口的左上右下四条边的坐标值,以屏幕左上角为原点。(刚开始以为前两个参数是窗口左上角的坐标,后两个是窗口的边长了。)

9.现在不明白的是CStatic类,是如何创建一个静态文本的。问题暂且记下。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值