OninitDialog和OnCreate

如果你想在窗口创建的时候,指定哪些控件显示,哪些控件不显示,那么选择重写OninitDialog,它是CDialog的成员函数 CDialog::OnInitDialog

MSDN示例代码:

BOOL CSimpleDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   // TODO: Add extra initialization here
   m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
   m_cMyList.ShowWindow(SW_HIDE);          // Show or hide a control, etc.

   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}

VS2017 通过类向导中的虚函数重写来添加此函数:

OnCreate

它是 CWnd的消息响应函数

CWnd::OnCreate

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

我们指定CDialog是CWnd的子类,那么我们可想象是哪个先调用的呢?这里理解当然父类先调用它的OnCreate来创建一个基础的窗口,在此基础窗口上,这个窗口是个文本框还是个对话框或者是个其他窗口,是由对应类的初始化函数来决定的,对于对话框来说就是OninitDialog

 

网友们都说的很好:

通常你要先建立(OnCreate)一个窗体, 然后再对他进行初始化(OninitDialog).

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

  响应WM_CREATE消息(即OnCreate)的时候窗口还没有建立,你可以给成员变量赋值,也可以修改窗口的基本内容比如风格,但是不能对窗口控件操作,因为窗口还没有建立。

  在响应WM_CREATE消息的时候,对话框及子控件还未创建完成,亦是说只是通知系统说要开始创建窗口啦,这个消息响应完之后,对话框和子控件才开始创建。因此在此消息响应函数中无法对控件进行修改和初始化。

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


  响应WM_INITDIALOG消息(即OnInitDialog)时候窗口已经建立,你可以移动窗口,修改风格等等,也可以给成员变量赋值。

  WM_INITDIALOG消息响应函数是在程序运行时,当其对话框和子控件全部创建完毕,将要显示内容的时候发送的消息。因此可以在WM_INITDIALOG消息响应函数中添加对编辑框控件的初始化和修改。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值