设为首页 加入收藏

TOP

6.2.2 显示对话框
2013-10-07 00:35:46 来源: 作者: 【 】 浏览:53
Tags:6.2.2 显示 对话

6.2.2  显示对话框

在Windows系统中对话框可以分为两类,分别是模态对话框和非模态对话框,两种对话框的显示方法是不同的,下面分别进行介绍。

1.模态对话框的显示(DoModal方法)

模态对话框的特点是在对话框弹出以后,其他程序会被挂起,只有当前对话框响应用户的操作,在对话框关闭前用户不能在同一应用程序中进行其他操作。要显示模态对话框,首先要为模态对话框声明一个对象,然后调用该对象的DoModal方法进行显示(DoModal方法用于创建并显示一个模态对话框)。

语法格式如下:

virtual int DoModal( );

返回值:DoModal方法返回一个整数值,该数值可以应用于EndDialog方法。如果方法返回值为-1,表示没有创建对话框;如果为IDABORT,表示有其他错误发生。

关闭模态对话框时,可以调用CDialog类的OnOK方法或OnCancel方法进行关闭。用户单击OK按钮(按钮ID为IDOK)时调用OnOK方法,该方法在内部调用了EndDialog方法,因此用户单击OK按钮时会关闭对话框。通常情况下,用户需要改写该方法,禁止调用基类的OnOK方法。当用户在对话框中单击ID为IDCANCEL的按钮或按Esc键时,程序将自动调用OnCancel方法,默认情况下OnCancel方法在内部调用EndDialog方法。如果用户在一个非模态对话框中实现OnCancel方法,需要在内部调用DestroyWindow方法,而不要调用基类的OnCancel方法,因为它调用EndDialog方法将使对话框不可见,但不销毁对话框。

例6.1  显示一个模态对话框。

CShowDlg dlg;  //声明对话框类对象
dlg.DoModal();  //显示模态对话框
例6.2  关闭一个模态对话框。
CDialog::OnCancel(); //关闭模态对话框

2.非模态对话框的显示(Create方法)

非模态对话框在打开以后,不会影响其他线程处理消息。显示非模态对话框,首先要调用CDialog类的Create方法进行创建。

语法格式如下:

BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL );
BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );

lpszTemplateName:标识资源模板名称。

pParentWnd:标识父窗口指针。

nIDtemplate:标识对话框资源ID。

返回值:如果对话框创建成功,返回值为非0,否则为0。

然后通过ShowWindow函数进行显示。

语法格式如下:

 BOOL ShowWindow( int nCmdShow );

其中,nCmdShow指定了窗口的显示状态。

在销毁窗口时要使用CDialog类的DestroyWindow方法。

说明:如果一个窗口是父窗口,调用该窗口的DestroyWindow方法时,将销毁所有的子窗口。

例6.3  显示一个非模态对话框。

CShowDlg* dlg = new CShowDlg;  //声明对话框指针
dlg->Create(IDD_SHOW_DIALOG,this); //创建非模态对话框
dlg->ShowWindow(SW_SHOW);  //显示非模态对话框
例6.4  销毁一个非模态对话框。
dlg->DestroyWindow();    //销毁非模态对话框
delete dlg;       //释放指针
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇6.3.1 设置对话框的标题 下一篇6.2.1 创建对话框

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: