VC编程心得范文.doc

VC编程心得范文.doc

ID:48732042

大小:64.73 KB

页数:7页

时间:2020-02-27

VC编程心得范文.doc_第1页
VC编程心得范文.doc_第2页
VC编程心得范文.doc_第3页
VC编程心得范文.doc_第4页
VC编程心得范文.doc_第5页
资源描述:

《VC编程心得范文.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、VC编程心得范文  VC编程心得  1、MFC程序的来龙去脉MFC程序也是Windows程序,所以它也有一个WinMain,但是我们在程序中看不到它的踪影。  实际上,在程序进入点之前,有一个(而且只有一个)全局对象(在Hello程序中名为theApp),这是所谓的applicationobject,当操作系统将程序加载并激活时,这个全局对象获得配置,其构造函数会先执行,比WinMain更早。  书中所举Hello程序,是一个简单的MFC程序,其主体在于WinMain和WndProc,而这两个部分其实都有相当程度的不变性。  MFC就是把有着相当固

2、定行为的WinMain内部操作封装在CWinApp中;把有着相当固定行为的WndProc内部操作封装在CFrameWnd中。  也就是说,CWinApp代表程序本体,CFrameWnd代表一个主框窗口虽然WinMain和WndProc内部操作有相当程度的不变性,但面对不同应用程序也需有变化,所以必须以这两个类为基础,派生自己的类,并改写其中一部分成员函数。  CWinApp----取代WinMain的地位传统上SDK程序的WinMain所完成的工作现由CWinApp的三个函数完成virtualBOOLInitApplication();virtua

3、lBOOLInitInstance();virtualBOOLRun();CFrameWnd-----取代WndProc的地位CFrameWnd主要用来掌握一个窗口引爆器------Applicationobject当执行Hello程序时,这个全局对象产生,于是构造函数(见APPCORE.CPP)执行起来,CWinApp之中的成员变量将因为这个全局对象的诞生而获得配置与初值,配置完成后,WinMain(MFC早已准备好,并由链接器直接加到应用程序中去的)登场。  AfxWinInit是继CWinApp构造函数之后的第一个操作;此后的操作是pApp-

4、>InitApplication(其中的pApp指向CMyWinApp对象,即本例中的theApp),因为CMyWinApp继承自CWinApp,而InitApplication又是CWinApp的一个虚拟函数,我们没有改写它(大部分情况下也不需要改它),所以上述操作相当于调用CWinAppInitApplication。  此程序的代码出现在APPCORE.CPP中;继InitApplication之后,AfxWinMain调用pApp->InitInstance,InitInstance是CWinApp的一个虚拟函数(应用程序一定要改写这个函数

5、,因为它在CWinApp中是个空函数,没有任何默任操作),我们改写了它,所以上述操作就是调有我们自己的这个InitInstance函数,我们将在该处展开我们的主窗口生命。  CMyWinAppInitInstance一开始new了一个CMyFrameWnd对象,new会引发构造函数CmyFrameWndCMyFrameWnd,其中调用了CFrameWnd的成员函数Create,它将产生一个窗口。  Create函数共八个参数,第一个,指定WNDCLASS窗口类,如果放置NULL,表示要以MFC内建的窗口类产生一个标准的外框窗口(Create函数在产

6、生窗口之前会引发窗口类的注册操作,下一段讲述这一内容);第二个,指定窗口标题;第三个,指定窗口风格,默认是WS-OVERLAPPEDWINDOW,如果你不想要窗口右上角的极大极小钮,可以WS-OVERLAPPED

7、WS-CAPTION

8、WS-SYSMENU

9、WS-THICKFRAME

10、WS-MINIMIZEBO改成X

11、WS-MAXIMIZEBOX,如果希望有垂直滚动条,再加上WS-VSCROLL;第四个参数,指定窗口的位置与大小,默认值rectDefault;第五个,指定父窗口,第六个指定菜单;第七个,为扩充风格,唯有以CreateWindowEx

12、(而非CreateWindow)函数才能完成,事实上,CFrameWndCreate最终调用的正是CreateWindowEx;第八个,是一个指向CCreateContext结构的指针,framework利用它,在具备Document/View结构的程序中初始化外框窗口,默认值NULLCFrameWndCreate在函数中调用CreateEx(CWnd有这个成员函数,但其派生类CFrameWnd并没有,所以这里调用的实际上是CWndCreateEx);后者又调用PreCreateWindow虚拟函数(它在CWnd及其派生类CFrameWnd都有定义

13、,所以实际上调用的是CFrameWndPreCreateWindow),这个函数调用了AfxDeferRegisterCl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。