MFC 执行顺序总结

源代码:

  1. CMyTest1App();//首先执行构造函数
  2. virtual BOOL InitInstance();//第二步执行初始化函数
  3. CMyTest1Dlg dlg;//执行 CMyTest1Dlg 的构造函数
    // CMyTest1Dlg 消息处理程序
    //zy 当CDiaog子类调用DoModal()函数时,就会触发一系列函数调用,最终调用OnInitDialog()
    //zy MFC中, OnInitDialog()函数(对话框初始化),可以把它理解为开始构建对话框的函数
    m_pMainWnd = &dlg;
    INT_PTR nResponse = dlg.DoModal();//zy 执行 OnInitDialog
  4. BOOL CMyTest1Dlg::OnInitDialog()//CMyTest1Dl 消息处理程序
    //zy 当CDiaog子类调用DoModal()函数时,就会触发一系列函数调用,最终调用OnInitDialog()
    //zy MFC中, OnInitDialog()函数(对话框初始化),可以把它理解为开始构建对话框的函数
  5. void CMyTest1Dlg::OnPaint()//zy 这是窗口的重绘回调
    /* zy 这是窗口的重绘回调
    WM_PAINT消息仅用于以下两种情况:
  6. 当用户移动窗口或显示窗口,或用户改变窗口的大小,或滚动窗口用户区时, Windows会向窗口函
    数发送WM_PAINT消息。
  7. 当Windows关闭覆盖窗口部分区域的对话框时,以及菜单下拉出来又被释放时,窗口用户区被临时
    覆盖,系统会试图恢复显示区域,可能向窗口函数发送一条WM_PAINT消息,要求应用程序刷新其用户
    区。
    这两种情况下将使MFC调用OnPaint处理函数。也仅有这两种情况,视图对象具有一个OnPaint处理函
    数。 */
  8. void CMyTest1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
    //zy 系统响应函数
    /*
    对话框的系统菜单命令,包括关闭对话框,最小化最大化,弹出关于对话框,移动对话框等等,实际
    上就是向这个对话框发送WM_SYSCOMMAND消息,对话框响应WM_SYSCOMMAND消息,然后根据不同的nID
    值判断到底是什么系统命令(关闭对话框,最大最小化还是其他什么),这个OnSysCommand就是用来
    响应WM_SYSCOMMAND消息,进行相应处理的*/->其他系统自动生成的函数和变量
    //zy 框架调用此函数来改写与确认对话框数据
    1.virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持,
  9. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//zy HICON 是微软平台下的图标句柄。
    /* zy
    在MFC中, H是句柄的意思, H开头的变量都是句柄变量, Icon是英文单词图标,
    所以这个是一个图标的句柄。
    类似的还有HWnd,其中Wnd是window是缩写,就是窗口句柄。 */
  10. //zy MFC的消息映射
    BEGIN_MESSAGE_MAP(CMyTest1Dlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, &CMyTest1Dlg::OnBnClickedButton1)
    ON_BN_CLICKED(IDOK, &CMyTest1Dlg::OnBnClickedOk)
    ON_BN_CLICKED(IDCANCEL, &CMyTest1Dlg::OnBnClickedCancel)
    END_MESSAGE_MAP()
    ->用户UI界面中生成的指令 以按钮举例:
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zy47675676/article/details/82841235
MFC