首先是创建模态对话框和非模态对话框
模态对话框:CDialog dlg;
dlg.DoModal();
非模态对话框:CDialog *dlg;
dlg->Create(IDC_Dialog1,this);
dlg->ShowWindow(SW_SHOW);
如何给EDIT框一个单击事件:
首先建立类向导里插入PreTranslateMessage(MSG* pMsg) 函数
BOOL CKeyboardDlg::PreTranslateMessage(MSG* pMsg)
{
CWnd * pWnd1 = GetDlgItem(IDC_EDIT1);
if(GetFocus()==pWnd1)//
if(pMsg-> message == WM_LBUTTONDOWN )
{
m_key.Create(IDD_DIALOG1,this);
m_key.ShowWindow(SW_SHOW);
}
return CDialog::PreTranslateMessage(pMsg);
}
当EDIT框获得光标时候弹出对话框时我们需要注意的东西
当弹出对话框后其实光标还是在编辑框里面,只是当前活动窗口变成了子窗口,等你一关闭子窗口后会又回到当前的编辑框里,相当于形成了一个死循环,
所以我们一定要在关闭子对话框的时候同时不要把光标落在当前的编辑框里(不能用 ::DestroyCaret(); 销毁光标,那个只是销毁了光标,实际上还是
在当前编辑框里),要用SetFocus()把它移动到其他的控件上,不能在EDIT的OnSetfocus里设置,必须得在关闭子对话框的函数里把活动控件移到其他
控件上。
子对话框如何调用父对话框函数
在子对话框中先添加父对话框的头文件
然后定义:CDialog *dlg=(CDialog *)GetParent();就可以调用了。
如何不让对话框程序不一按回车键和ESC键就退出程序:
原因:回车键和ESC键默认调用的是程序的原有的OnOK();
所以直接重载下OnOK();就可以了,重载的方法,重新定义一个函数名一样的函数。