chapter2 MFC基础.pptVIP

  • 9
  • 0
  • 约1.28万字
  • 约 80页
  • 2016-12-02 发布于浙江
  • 举报
chapter2 MFC基础

应用程序框架结构类 MFC消息种类 消息机制是 Windows应用程序的核心,MFC中的消息可以分为: ● Windows消息 ●控件通知消息 ●定时消息 ●命令消息 Windows消息 ● Windows消息通常指以WM开头的消息,但WM_COMMAND除外。 ●键盘消息和鼠标消息都属于Windows消息,Windows消息由窗口和视图进行处理。 ● Windows消息通常带有若干个参数传递给消息处理函数,这些参数为处理函数正确地处理消息提供了充分的信息。 定时消息 ●定时消息也是Windows的一类重要消息。 ●当需要应用程序每隔一个指定的时间间隔便执行某一特定操作时,就需要使用定时消息WM_TIMER。 ●在进行定时操作时,用户需要调用SetTimer函数创建一个定时器,并设置定时器的事件标志nIDEvent及时间间隔nElapse,然后编写消息WM_TIMER的消息处理函数OnTimer(),实现定时操作。 5 MFC应用程序的运行机制 C程序是从Main()入口 利用win API开发的传统WINDOW应用程序是从winMain()入口 思考:MFC应用程序从哪里入口呢? 因为创建的MFC应用程序中找不到winmain函数。搜索包含winmain函数的文件C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\Appmodule.cpp中_tWinMain(winmain的宏定义),可以通过加入断点验证。 5.2 自动调用应用程序框架内的WinMain函数 调用_tWinMain即Winmain() 在Winmain()中调用AfxWinMain()(在C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\winmain.cpp AfxWinMain()中调用AfxGetApp(), 建立与theAPP建立关联 注:通过winmain.cpp中AfxWinMain()中的CWinApp* pApp = AfxGetApp(); 注:以AFX开头为MFC框架类函数,任何地方可以用。 5.2自动调用应用程序框架内的WinMain函数 winmain.cpp中AfxWinMain()中调用 pApp-InitApplication()//MFC调用的函数 pThread-InitInstance()//应用程序实例的初始化 cmywin.initinstance pThread-Run()//完成消息循环处理 通过这3个函数完成窗口的定义、注册、创建、更新,消息的处理。 5.2.1 cmywinApp::InitInstance() 提醒:cwinApp::InitInstance()是虚函数,因此调用的是cmywinApp的函数。 InitInstance() 执行过程中完成对窗口的注册、更新。 (1). 注册:Wincore.cpp中调用AfxEndDeferRegisterClass()函数中调用AfxRegisterClass(参数选择) //函数中会根据当时建立的选择来注册窗口类(已经存在很多的窗口类);AfxRegisterClass()中调用了RegisterClass(lpWndClass) 5.2.1 cmywinApp::InitInstance() (2)创建窗口. 调用CmainFrame中的PreCreateWindow()函数// 设断点验证 (3)显示和更新窗口: CMywinApp::InitInstance()继续调用m_pMainWnd-ShowWindow(); m_pMainWnd-UpdateWindow(); 5.3 消息循环处理 winmain.cpp中AfxWinMain() 中调用pThread-Run()完成CWinThread::Run()//消息循环机制 注:CWinThread::Run()在Threadcore.cpp中 5.4 消息处理winproc Wincore.cpp中调用AfxEndDeferRegisterClass()函数中wndcls.lpfnWndProc = DefWindowProc; 向导后的编程 编写一个实现具体功能的MFC应用程序的步骤: 编写一个实现具体功能的MFC应用程序的步骤: ClassWizard: Visual C++ IDE为MFC提供了大量的支持工具,除了MFC AppWizard[exe]向导,还提供了

文档评论(0)

1亿VIP精品文档

相关文档