• 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()

  • 相关阅读:
    征战蓝桥 —— 2015年第六届 —— C/C++A组第5题——九数组分数
    征战蓝桥 —— 2015年第六届 —— C/C++A组第5题——九数组分数
    征战蓝桥 —— 2015年第六届 —— C/C++A组第4题——格子中输出
    SSLZYC 邮票
    SSLZYC 道路阻塞
    SSLZYC 反射
    SSLZYC 家族
    秒杀系统架构分析与实战
    工厂模式
    工厂模式
  • 原文地址:https://www.cnblogs.com/wllwqdeai/p/11298853.html
Copyright © 2020-2023  润新知