随笔-145  评论-173  文章-70  trackbacks-0
先前讲了如何创建模态对话框,现在说说如何创建非模态对话框。
这里,无论是哪种方法,都借助了单文档程序,而且是通过菜单的方式来创建,于是消息的机制有点复杂,不过不影响学习。先来说说创建的过程吧。

MFC------对话框程序的创建:
先前一直 都是对话框程序,直接新建MFC程序,选择对话框程序,然后后面的一直选择OK就可以了,当然,如果不喜欢关于和3D的话可以去掉,我之前的程序都去掉了,这样可以使得程序精简,看起来比较轻松。

MFC-----单文档程序的创建:
选择的第一步就是单文档,后面也是一直点OK,不过个性化的选择还是看你个人。


讲解如何创建非模态对话框:
主要就是用Create函数来创建的,菜单的创建还是和前面一样,其实都和前面的模态对话框创建一样,注意的就是,函数在View下面的,然后要创建一个新类,派生自CDialog,不过觉得没有也一样,只用到指针而已,而且没有改写。
代码如下:
void CTest37View::OnDialog() 
{
    
// TODO: Add your command handler code here
    CDlg *pdlg = new CDlg;
    pdlg
->Create(IDD_DIALOG1,this);    //创建一个非模态对话框
    pdlg->ShowWindow(SW_SHOW);
}


其他的都一样,最后上个截图:

 

最后值得注意的几点:
1.非模态对话框中,不可以用CDialog类中的函数OnOK(),因为该函数调用的是EndDialog,而EndDialog该函数主要用于模态对话框,关闭非模态对话框的话要用DestoryWindow函数来实现。
2.在OnDialog函数中,必须使用指针来完成,因为只要指针申请的内存控件在子函数完成后还存在。。。。
posted on 2010-02-08 17:00 deercoder 阅读(1598) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理