1.1 背景
在应用软件中,常需要在当前窗口或对话框中再打开一个对话框,如BUTTON按钮打开、图标按钮打开、菜单选项打开等,这样就需要创建对话框。
对话框分模态对话框和非模态对话框。具体的区别可以到网络上查找。创建这两种对话框的方法为:
1)创建一非模态对话框
CMyDlg* pMainWnd = new CMyDlg;
pMainWnd->Create();
2)创建一模态对话框
CMyDlg dlg;
dlg.Domdal();
1.2 基本流程
创建一个DIALOG窗口,排版好自己的界面
为这个DIALOG创建一个类CDlgSmsNew;
为进入DIAGLOG的按钮写上ON函数,进入到DIALOG.
void CHYT_MessagesDlg::On_New_Msg()
{
//TODO: Add your control notification handler code here
CDlgSmsNew EditorMsgDlg;
EditorMsgDlg.DoModal();
}
1.3 常见问题
结果按钮死活没反应,调试也走到函数了,但返回是-1。
不知道为什么,google了一下午,各种关键字都用了,就是都没找到什么明确的答案,但PC里其他的参考应用程序用起来时没问题的。好想放弃,或用变通的方法做!!!!!
哥始终是个工程师,一定要钻牛角尖。
重新做对话框,重新建类,重新做按钮,都不管用。后来做了个默认的DIALOG加上去,居然可以用,则逐个加控件,居然是加Rich Edit控件的时候,就开始没反应了,NND,终于找到问题了。。。,但怎么解决这个问题呢,又是一筹莫展。又在google上用各种关键字,居然发现一位童鞋说到
“
如果对话框上有rech edit控件,那么初始化的时候要加上这一句:
AfxInitRichEdit();
为什么呢?
那么如果的确在dialog中需要一个RichEdit控件该如何去做呢?
答案是:在调用dialog的DoModal()之前调用AfxInitRichEdit().
”
终于找到光明了。