(整理)MFC框架主线结构剖析..docxVIP

  • 0
  • 0
  • 约1.93万字
  • 约 26页
  • 2022-10-16 发布于山东
  • 举报
精品文档 MFC框架主线构造解析 MFC就把有着相当固定行为的WinMain内部动作包装在CWinApp中,把有着相当固定行为的 WndProc内部动作包装在CFrameWnd中。 也就是说: CWinApp代表程序本体 ■CFrameWnd代表一个主框窗口(FrameWindow) 但虽然我说,WinMain内部动作和WndProc内部动作都有着相当程度的固定行为,它们毕竟需要面 对不同应用程序而有某种变化。所以,你必须以这两个种类为基础,衍生自己的种类,并改写其中一部份成员函数。 classCMyWinApp:publicCWinApp { ... 精品文档 精品文档 }; classCMyFrameWnd:publicCFrameWnd { ... }; 本章对衍生类其他命名规则是:在基础类又名称的前面加上My。 CWinApp-取代WinMain的地位 CWinApp的衍生对象被称为applicationobject,可以想见,CWinApp本身就代表一个程式本体。以下 是MFC4.x的CWinApp声明(节录自AFXWIN.H): classCWinApp:publicCWinThread { Attributes Startupargs(donotchange)HINSTANCEm_hInstance;HINSTANCEm_hPrevInstance;LPTSTRm_lpCmdLine; intm_nCmdShow; //Runningargs(canbechangedinInitInstance) CWnd*m_pMainWnd;//mainwindow(optional) LPCTSTRm_pszAppName;//humanreadablenameLPCTSTRm_pszRegistryKey;//usedforregistryentries public://setinconstructortooverridedefault LPCTSTRm_pszExeName;//executablename(nospaces) LPCTSTRm_pszHelpFilePath;//defaultbasedonmodulepath LPCTSTRm_pszProfileName;//defaultbasedonappname public: hooksforyourinitializationcodevirtualBOOLInitApplication( ); overridesforimplementationvirtualBOOLInitInstance( );virtualintExitInstance( ); virtualintRun( ); virtualBOOLOnIdle(LONGlCount); ... } 几乎可以说CWinApp用来取代WinMain在SDK程序中的地位。这并不是说MFC程序没有WinMain (稍后我会解释),而是说传统上SDK程序的WinMain所完成的工作现在由CWinApp的三个函数完成: virtualBOOLInitApplication( ); virtualBOOLInitInstance( ); 精品文档 精品文档 virtualintRun( ); WinMain只是扮演役使它们的角色。 但从MFC4.x开始,m_pMainWnd已经被移往CWinThread中了(它是CWinApp的父种类)。以下内容节录自MFC4.x的AFXWIN.H: classCWinThread:publicCCmdTarget { //Attributes mainwindow(usuallysameAfxGetApp( )-m_pMainCWnd*m_pMainWnd; CWnd*m_pActiveWnd;//activemainwindow(maynotbem_pMainWnd) //onlyvalidwhilerunning HANDLEm_hThread;//thisthreadsHANDLE DWORDm_nThreadID;//thisthreadsID intGetThreadPriority( ); BOOLSetThreadPriority(intnPriority); //Operations DWORDSuspendThread( ); DWORDResumeThread( ); Overridables threadinitializationvirtualBOOLInitInstance( ); runningandidleprocessing virtualintRun( ); virtualBOOLPreTranslateMessage(MSG*pMs

文档评论(0)

1亿VIP精品文档

相关文档