📄 sy0405.htm
字号:
<html>
<HEAD>
<TITLE>Visual C++与计算机接口</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=gb2312" >
</HEAD>
<body>
<font color="#0000FF">无模式对话框的使用</font>
<p>
(一)实验目的:<BR>
创建一个对话框,即使用户没有关闭该对话框,也能允许应用程序继续运行<BR><BR>
<p align="center"><span style="FONT-SIZE: 9pt"><img height="219" width="569" alt="无模式对话框" src="sy0402.jpg" ></span></p>
<p align="center"><span style="FONT-SIZE: 9pt">图1.4.2 一个无模式对话框允许应用程序继续运行,而不管用户有无作出反映</span></p>
(二)实验内容:<BR>
如同模式对话框一样创建一个对话框模板和对话框类,然后用新的对话框类的Create()成员函数创建一个无模式对话框;要关闭无模式对话框,可以用CWnd::DestroyWindow()。<BR><BR>
(三)实验方法:<BR><BR>
1、创建一个无模式对话框<BR>
用对话框编辑器在应用程序中创建一个对话框资源,然后用ClassWizard创建一个对话框类,一切操作与模式对话框一样。<BR>
换句话说,一个对话框类在创建和定义好以后,可以作为模式对话框使用,也可以作为无模式对话框使用。<BR>
2、使用对话框类创建一个无模式对话框。<BR>
CWzdDialog *pDlg;<BR>
pDlg = new CWzdDialog;<BR>
pDlg->Create(IDD_WZD_DIALOG);<BR>
pDlg->ShowWindow(SW_SHOW);<BR>
注意对话框类的实例,象生成一个新窗口一样,在堆中创建。<BR>
3、销毁一个无模式对话框,可以用:<BR>
pDlg->DestroyWindow();<BR>
4、用户可以通过单击对话框窗口右上角的关闭按钮关闭一个无模式对话框。<BR>
但当用户用这种方法关闭一个对话框窗口时,操作系统不知道是否应该删除对话框类。<BR>
因此用户必须在对话框类中做这一步。用ClassWizard重载对话框类的PostNcDestroy()函数,删除它自己的实例。<BR>
void CWzdDialog::PostNcDestroy()<BR>
{<BR>
CDialog::PostNcDestroy();<BR>
delete this;<BR>
}<BR>
5、一个无模式对话框示例——使用一个等待对话框<BR>
一般来说,用一个沙漏光标,可以指示用户应用程序正忙。<BR>
而对于一个更长时间的等待,建议使用一个无模式对话框,只要在它上面放置一个静态文本 Please wait...、一个进度指示控件或者一个动画控件,甚至还可以在它上面放置一个按钮以停止继续执行。<BR>
然后,在应用程序开始作大量工作以前,创建一个等待对话框:<BR>
CWzdWaitDialog dlg;<BR>
dlg.Create(IDD_WAIT_DIALOG);<BR>
dlg.ShowWindow(SW_SHOW );<BR>
dlg.UpdateWindow();<BR>
// processing.............<BR>
这里使用 CWnd::UpdateWindow() 可以强制对话框窗口取得一个WM_PAINT消息。<BR>
<p></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -