vc_mfc_执行流程
来源:互联网 发布:fix it center 编辑:程序博客网 时间:2024/05/17 00:03
1,CWnd
--窗口操作相关的基类;
--CWnd m_wd; //此时,m_wd作为CWnd类可以使用,但其m_hwnd并没有关联上窗口;
--w_hwnd = CreateWindowEx(); //窗口创建了以后,才是CWnd和窗口关联起来,此时w_hwnd才能使用;
--CWnd如何和窗口相关联;
--其封装了Win32 API,比如CreateWindowEx(), ::ShowWindow(); UpdateWindow()等;
--CWnd成员HWND m_hwnd用来记录创建的窗口,这样可以通过获取CWnd类m_hwnd来随时获取窗口;
--CWnd类销毁时,其存放的窗口必须销毁,应为类的生命周期到了,m_hwnd指示窗口应该释放掉;
--窗口销毁时,CWnd类的生命周期未必到了,所以CWnd未必和窗口一起销毁,CWnd生命周期可以更长;
-------------------------------------
2,MFC程序执行流程
--在C**App()::C**App()处设断点,appmodul.cpp的 _tWinMain()处设置断点
--调试: 先进入C**App()::C**App() , 而后 _tWinMain();
1,全局对象/变量先于 WinMain();
--C**App theApp全局对象代表了应用程序本省,相当于Win32 Console程序的hInstance;
--C**App: public CWinApp,所以会调用CWinApp::CWinApp();
2,WinMain()
--C:/Program Files/Microsoft Visual Studio 9.0/VC/atlmfc/src/mfc
--搜索文件包含的文字 "WinMain" => appmodul.cpp
--验证其为mfc程序入口点: 用classwizard生成mfc程序,在appmodul.cpp的 _tWinMain()处设置断点,启动程序断住,验证成功;
--调用AfxWinMain();
1,CWinThread* pThread = AfxGetThread(); //获取指向theApp的指针;
2,CWinApp* pApp = AfxGetApp(); //获取指向theApp的指针; [CWinApp:public CWinThread]
3,pThread->InitInstance(); //虚函数,将调用CMy9_styleApp::InitInstance();
3.1,AfxEndDeferRegisterClass(); //注册窗口类;--可看到mfc默认注册过的窗口类;
--调用AfxRegisterClass()注册窗口类;
3.2,ProcessShellCommand(cmdInfo) //cmdInfo.m_nShellcode = newfile;
--CFrameWnd::LoadFrame()
1,CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
--CFrameWnd::PreCreateWindow(CREATESTRUCT& cs) //检验是否注册,给窗口赋属性;
2,,CFrameWnd::Create() //创建窗口;
--CWnd::CreateEx();
4,nReturnCode = pThread->Run(); //消息循环;
--CWinThread::Run();
--AfxInternalPumpMessage();
::GetMessage(&(pState->m_msgCur), NULL, NULL, NULL)
::TranslateMessage(&(pState->m_msgCur))
::DispatchMessage(&(pState->m_msgCur));
-------------------------------------
3,CWinApp
--C:/Program Files/Microsoft Visual Studio 9.0/VC/atlmfc/src/mfc
--搜索文件包含的文字 "CWinApp" => appcore.cpp
--构造函数 CWinApp::CWinApp(LPCTSTR lpszAppName); //默认参数
--将this(theApp)指针传入 pThreadState->m_pCurrentWinThread = this;
- vc_mfc_执行流程
- vc_mfc_绘图
- vc_mfc_文本
- vc_mfc_菜单
- vc_mfc_对话框
- vc_mfc_消息机制
- 执行流程
- WebWork执行流程
- 控制执行流程
- 浅谈Webwork2执行流程
- PsLookupProcessByProcessId的执行流程
- MFC应用程序执行流程
- AbstractFormController执行流程
- MFC 程序执行流程
- ssh执行流程
- classloader执行流程分析
- JSP基本原理,执行流程
- struts执行流程
- 遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效。”
- struts2标签dojo
- tzc 3489 Baking Cakes
- 想开博了.. 低调~
- 解决 Linux下oracle导入(imp)导出(exp)出现"failed to open ...for reader/wirte" 错误
- vc_mfc_执行流程
- 操作系统作业调度算法模拟
- 定义Table时显示表格边框显示1px
- TFS 源码控制中的搁置
- SQLPlus 登录方法
- GSM短信发送PDU编码解码C++控制台实现
- 分析函数调用关系图(call graph)的几种方法
- Eclipse中server启动超时的解决方法
- Stack around the variable 'cmdInfo' was corrupted