MFC执行过程详解
来源:互联网 发布:单片机电子秤毕业设计 编辑:程序博客网 时间:2024/04/30 10:08
转于:http://blog.sina.com.cn/s/blog_4ca059540100jqy3.html
1.CObject类为MFC总类,该类下面有一个重要的类CCmdTarget。而CCmdTarget类下面又有四个重要的继承类,分别为:CWinThread、CDocument、CDocTemplate、
2.MFC头文件:
■AFXWIN.H:每个MFC程序都必须载入它,因为它以及它所载入的文件声明了所有的MFC类。此文件内包含AFX.H,后者又包含AFXVER_.H,后者又包含AFXV_W32.H,后者又包含WINDOWS.H
■AFXEXT.H:凡使用工具栏、状态栏的程序必须载入此文件。
■AFXDLGS.H:凡使用通用型对话框(Common Dialog)的MFC程序要载入此文件。
■AFXCMN.H:凡使用Windows9x新增的通用型控件(Common Control)之MFC程序需载入此文件。
■AFXCOLL.H:凡使用Collections Class(处理数据结构如数据,链表类等)之程序需载入此文件。
■AFXDLLX.H:凡MFC extension DLLs需载入此文件。
■AFXRES.H:MFC程序的RC文件必须载入此文件。MFC对于标准Windows资源(如File,Edit等)的ID均有默认定义,这此定义在该头文件内。
3.什么是Precompiled Header:
4.关于应用程序的进入点WinMain和窗口过程WndProc:
5.CWinApp类取代了SDK中的WinMain地位:
6.CFrameWnd类取代了SDK中的WndProc地位
7.MFC中阴晦的WinMain:
第一、它会获得Application Object的指针(亦CWinApp派生对象的指针),在此是获得MyWinApp的指针,以备后用。它是通过下面这句来实现的:
第二、调用AfxWinInit(...)函数,用作MFC GUI程序初始化的一部分,这个函数详见后解...
第三、用上面获得的pApp调用InitApplication()函数,如下:pApp->InitApplication(); InitApplication函数详见后解...
第四、用pApp调用InitInstance()函数,如下:pApp->InitInstance(); InitInstance函数详见后解...
第五、用pApp调用Run()函数,如下: nReturnCode = pApp->Run(); Run函数详见后解...
第六、最后调有AfxWinTerm函数,结束该应用程序。
{
int nReturnCode = -1;
CWinApp* pApp = AfxGetApp();
AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow); //详见第9条
pApp->InitApplication();
pApp->InitInstance();
nReturnCode = pApp->Run();
AfxWinTerm();
return nReturnCode;
}
8.AfxGetApp是如何获得CWinApp继承类(在此即CMyWinApp)的实体的指针的?
9.AfxWinInit ----AFX内部的初始化操作:②
ASSERT(hPrevInstance == NULL);
AFX_MODULE_STATE* pState = AfxGetModuleState();
pState->m_hCurrentInstanceHandle = hInstance;
pState->m_hCurrentResourceHandle = hInstance;
// fill in the initial state for the application
CWinApp* pApp = AfxGetApp();//还是获得CMyWinApp实体的指针。
if (pApp != NULL)
{
// Windows specific initialization (not done if no CWinApp)
pApp->m_hInstance = hInstance;
pApp->m_hPrevInstance = hPrevInstance;
pApp->m_lpCmdLine = lpCmdLine;
pApp->m_nCmdShow = nCmdShow;
pApp->SetCurrentHandles();
}
if (!afxContextIsDLL)
AfxInitThread();
return TRUE;
}
10.CWinApp::InitApplication()函数:③
{
if (CDocManager::pStaticDocManager != NULL)
{
if (m_pDocManager == NULL)
CDocManager::pStaticDocManager = NULL;
}
if (m_pDocManager != NULL)
m_pDocManager->AddDocTemplate(NULL);
else
CDocManager::bStaticInit = FALSE;
return TRUE;
}
- MFC执行过程详解
- MFC执行过程详解
- MFC执行过程详解
- MFC 执行过程
- MFC执行过程
- mfc执行过程剖析
- MFC--程序执行过程
- MFC程序执行过程
- MFC执行过程
- MFC程序执行过程剖析
- MFC的进程执行过程
- MFC程序执行过程剖析
- VS中MFC执行过程
- MFC程序的执行过程
- MFC程序执行过程剖析
- MFC程序执行过程剖析
- MFC函数启动执行过程
- 详解MapReduce执行过程
- 面向对象和面向过程的区别
- 支付宝“移动”起来 移动支付标准之争白热化
- 鸡蛋饭
- Castle
- 网络模式:GSM,WCDMA,CDMA2000什么意思
- MFC执行过程详解
- Windsor
- Untiy
- Spring.NET
- StructureMap
- c++ 我的第一个程序 hello world!
- Ninject
- 将 Subversion 与 Adobe Dreamweaver CS5 结合使用
- jsp重定向forward和sendRedirect的比较