VS2005中探索MFC Dialog运行机制

VS2005中探索MFC运行机制 Dialog,以便更深入掌握MFC。
  
ntdll.dll 进入
BOOL WINAPI_DllMainCRTStartup()
{
  调用了__DllMainCRTStartup()函数
 {
   调用了_CRT_INIT(hDllHandle, dwReason, lpreserved)
  {
   调用 _initterm(__xc_a,__xc_z)
   {
    调用 (**pfbegin)(),
    {
     构造了CWinApp _afxOleWinApp;对象
    }
   }  
  }
  
  调用 WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)
  {
   调用AfxWinInit(hInstance, NULL, _T(""), 0);
  }
 }

kernel32.dll 进入
mainCRTStartup()
{
 调用__tmainCRTStartup()
 {
  构造全局变量CtestdlgApp theApp;
  先进入基类构造CWinApp::CWinApp

  运行WinMain即 _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
     __in LPTSTR lpCmdLine, int nCmdShow)
  {
   调用AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow)
   {
    调用AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow)
    调用pApp->InitApplication()
    调用pThread->InitInstance() 即CtestdlgApp::InitInstance()
    {
     构造CtestdlgDlg dlg对象
     {
      调用CDialog构造
      {
       调用CWnd构造
       {
        
       }
      } 
     }
     
     调用 dlg.DoModal()
     {
      调用CreateDlgIndirect(lpDialogTemplate,
      CWnd::FromHandle(hWndParent), hInst)
      {
       调用AfxDeferRegisterClass(AFX_WNDCOMMCTLSNEW_REG)注册窗口类
       调用::CreateDialogIndirect(hInst, lpDialogTemplate,
       pParentWnd->GetSafeHwnd(), AfxDlgProc)创建窗口
      }
      调用RunModalLoop(dwFlags) 进入消息循环
     }
    }
   }
  }
 }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值