new and create
void CProgramDlg::OnBnClickedButton1()
{
CDlgModeless * dlg = new CDlgModeless();
dlg->Create(CDlgModeless::IDD, this);
dlg->ShowWindow(SW_SHOW);
}
需要处理,non-client area destory 消息,OK 按钮,Cancel 按钮
BEGIN_MESSAGE_MAP(CDlgModeless, CDialog)
ON_WM_NCDESTROY()
ON_BN_CLICKED(IDOK, &CDlgModeless::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &CDlgModeless::OnBnClickedCancel)
END_MESSAGE_MAP()
在 non-client area destroy 时,delete 上面 new 出来的对话框
void CDlgModeless::OnNcDestroy()
{
CDialog::OnNcDestroy();
delete this;
}
在 OK 和 Cancel 时,调用 DestroyWindow,它会发出 WM_NCDESTORY
void CDlgModeless::OnBnClickedOk()
{
if( UpdateData(true) )
DestroyWindow();
}
void CDlgModeless::OnBnClickedCancel()
{
DestroyWindow();
}