MFC单文档创建过程

MFC单文档创建过程

先生成theApp对象,然后在WinMain()函数中调用theApp对象的InitInstance()函数等

theApp(CWinApp(CWinThread)类对象)

->WindMain()(AfxWinMain()获取CWinApp类的指针
->CWinApp::InitInstance()(pApp、pThread完成设计窗口类、注册窗口类、创建窗口、显示窗口、更新窗口、消息循环、窗口过程函数))
{
->.......文档模板链......
->ProcessShellCommand()执行消息,执行映射函数->
->创建窗口
创建窗口之前:CMainFrame::PreCreateWindow()(CFrameWnd::PreCreateWindow()(AfxDeferRegisterClass()注册类))
创建窗口:CFrameWnd::Create()(CWnd::CreateEx()(CMainFrame::PreCreateWindow()修改窗口、AfxHookWindowCreate(this);CreateWindowEx()))
->显示、更新:m_pMainWnd->ShowWindow();m_pMainWnd->UpdateWindow()
->消息循环:pThread->Run()(CWinThread::Run()(CWinThread::PumpMessage()))
->窗口过程函数:AfxEndDeferRegisterClass()(wndcls.lpfnWndProc=DefWindowProc);消息映射;
}

窗口类对象&窗口:调用C++窗口类对象的CreateEx()函数创建窗口,窗口类对象内部定义了一个窗口句柄对象m_hwnd,其保存了与窗口类对象相关的窗口的句柄;

给窗口添加控件,在响应WM_CREATE消息的OnCreate()函数中添加;
窗口在响应WM_CREATE消息的OnCreate()函数创建;

窗口创建过程:
窗口创建之前->PreCreateWindow()->CreateWindowEx()

窗口创建后->WM_CREATE->OnCreate()->->->->->->->->->

窗口重绘:
窗口大小变化->WM_PAINT->OnPaint->OnDraw()->->->->->
如果重写OnPaint(),并不会自动调用OnDraw()

视类窗口创建完成后第一个调用的函数OnInitialUpdate():设置窗口尺寸等->OnPaint()->OnPrepareDC()->OnDraw()

 

原文链接: https://www.cnblogs.com/wllwqdeai/p/11298853.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    MFC单文档创建过程

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/300295

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 下午9:19
下一篇 2023年2月15日 下午9:20

相关推荐