正在阅读:『VC++技术内幕』学习笔记(2)『VC++技术内幕』学习笔记(2)

2004-02-14 09:34 出处:PConline 作者:雷神 责任编辑:zwg
让我们看看这个程序中的一些元素。 ①WinMain函数:并非不存在只是已经被隐藏在应用程序框架内部。 ②CMyApp类:CMyApp类的对象代表一个应用程序,CWinApp基类决定它的大部分行为。 ③应用程序的启动:当开始运行应用程序时WINDOWS会调用WinMain函数,WinMain会查找该应用程序的全局对象theApp。 ④CMyApp::InitInstance成员函数:发现theApp后自动调用重载的虚函数InitInstance来完成主窗口的构造和显示工作。记住这个函数。 ⑤CWinApp::Run成员函数:WinMain在调用InitInstance之后紧接着调用Run函数,它被隐藏在基类中负责传递应用程序的消息给相映的窗口。(我把它理解为好象SDK的窗口的过程函数不知对不对) ⑥CMyFrame类:此类的对象代表着应用程序的主窗口。它的构造函数调用基类CFrameWnd的Create函数创建具体的窗口结构。 ⑦CMyFrame::OnLButtonDown函数:演示消息处理机制,当鼠标坐键被按下这一事件被映射到CMyFrame的OnLButtonDown函数上,如果你选择F5进行编译运行的话可以在调试窗口看到TRACE宏显示的类似下面的信息 Entering CMyFrame::OnLButtonDown - 1,309,119 Entering CMyFrame::OnLButtonDown - 1,408,221 ⑧CMyFrame::OnPaint函数:应用程序每次重新绘制窗口都需要调用此函数,将显示"Hello World!"放在这里是因为每次窗口发生变化时保证"Hello World!"被显示,你可以试着将语句: CPaintDC dc(this); dc.TextOut (0,0,"Hello World!"); 写在别出,例如写在 void CMyFrame::OnLButtonDown (UINT nFlags,CPoint point) { TRACE("Entering CMyFrame::OnLButtonDown - %lx,%d,%d\n", (long)nFlags,point.x ,point.y); CPaintDC dc(this); dc.TextOut (0,0,"Hello World!"); } 运行后当点击左键时显示"Hello World!",但当窗口最小化再最大化时"Hello World!"不见了。 ⑧关闭应用程序:用户关闭应用程序时会有一系列事件发生。首先CMyFrame对象被删除,然后退出Run,进而退出WinMain,最后删除CMyApp对象。   通过上面的示例我们看见程序的大部分功能包含在基类CWinApp和CFrameWnd中,我们只写了很少的函数,便可以完成很复杂的功能。所以应用程序框架不仅仅是一种类库,它还定义了应用程序的结构,除了基类外还包括WinMain函数,以及用来支持消息处理、诊断、DLL、等都包含在应用程序框架中。 (未完待续) 下一篇:消息映射和视图类
键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品