通过单步调用MFC我来为你找到MFC的一些根本的函数吧。还解析下。个别宏定义的函数是什么意思。
当然MFC的CMainFrame类固然是MFC框架的老大了。他的工作是核心工作。所以他也是先创建的。那么我们单步调用的时候就从他开始。
CMainFrame类的构造函数创建后。
进入IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) 这是一个宏
跳到 CRuntimeClass类的CreateObject();的 pObject = (*m_pfnCreateObject)();弄了个pObject出来并返回他的值。
返回到 CDocTemplate类
的CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther)下面的CFrameWnd* pFrame = (CFrameWnd*)m_pFrameClass->CreateObject();看来是要知道Frame创建成功了没有。翻译过来就是问框架创建没有?
继续往下 到 这个类下面的。ASSERT_KINDOF(CFrameWnd, pFrame); 一个函数。是什么意思呢。我没进去了解过。
继续往下 到这个类下面的 pFrame->LoadFrame(m_nIDResource,WS_OVERLAPPEDWINDOW|FWS_ADDTOTITLE, /*default frame styles*/,NULL, &context);
创建pFrame成功了。要返回pFrame了。
返回到CSingleDocTemplate类(DOCSINGL.CPP)
的OpenDocumentFile(LPCTSTR lpszPathName,BOOL bMakeVisible);的语句pFrame = CreateNewFrame(pDocument, NULL);
继续往下 到了这个类的SetDefaultTitle(pDocument);
继续往下 到了这个类的CWinThread* pThread = AfxGetThread(); //先生,这不是要创建一个线程了吗?是的谢谢.
继续往下 到了这个类的InitialUpdateFrame(pFrame, pDocument, bMakeVisible);//初始化了。
最后返回pDocument
返回到CDocManager类(DOCMGR.CPP)
的OnFileNew();的语句pTemplate->OpenDocumentFile(NULL);
返回(无返回值);
返回到了CWinApp类(APPDLG.CPP)
的OnFileNew();的语句 m_pDocManager->OnFileNew();
返回(无返回值);
返回到_AfxDispatchCmdMsg(CMDTARG.CPP)注意:这个是框架函数。框架调用了。不属于某个类了。
的语句(pTarget->*mmf.pfn_COMMAND)();
返回 bResult (类型BOOL);
返回到CCmdTarget类(CMDTARG.CPP)
的OnCmdMsg(UINT nID, int nCode, void* pExtra,
AFX_CMDHANDLERINFO* pHandlerInfo)的语句return _AfxDispatchCmdMsg(this, nID, nCode,
lpEntry->pfn, pExtra, lpEntry->nSig, pHandlerInfo);
返回就是上面的bResult了。
返回到了CWinApp类(APPUT2.CPP)
的ProcessShellCommand(CCommandLineInfo& rCmdInfo)的语句 AfxGetApp()->OnCmdMsg(ID_FILE_NEW, 0, NULL, NULL);
返回bResult;
返回到C用户定义App类(用户定义.CPP)
的InitInstance()的语句ProcessShellCommand(cmdInfo);
返回 TRUE;
(WINMAIN.CPP)
AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nCmdShow) (框架函数)的语句pThread->InitInstance();
继续的语句nReturnCode = pThread->Run();//这时候你创建的窗口开始运行起来了。
到了这里了。创建的工作也完成了。后面就看窗口怎么运行了。
表示类自己定义的函数
表示调用人家的函数了。(借用东西一定要说明)
表示创造成功了的东西。或者说是一个类,或变量