创建有模式对话框

2016-02-19 12:19 3 1 收藏

下面是个超简单的创建有模式对话框教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

使用有模式对话框时在对话框弹出后调用函数不会立即返回,而是等到对话框销毁后才会返回(请注意在对话框弹出后其他窗口的消息依然会被传递)。所以在使用对话框时其他窗口都不能接收用户输入。创建有模式对话框的方法是调用CDialog::DoModal()。下面的代码演示了这种用法:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

CYourView::OnOpenDlg()

{

         CYourDlg dlg;

         int iRet=dlg.DoModal();

}

CDialog::DoModal()的返回值为IDOK,IDCANCEL。表明操作者在对话框上选择“确认”或是“取消”。由于在对话框销毁前DoModal不会返回,所以可以使用局部变量来引用对象。在退出函数体后对象同时也会被销毁。而对于无模式对话框则不能这样使用,下节5.3 创建无模式对话框中会详细讲解。

你需要根据DoModal()的返回值来决定你下一步的动作,而得到返回值也是使用有模式对话框的一个很大原因。

使用有模式对话框需要注意一些问题,比如说不要在一些反复出现的事件处理过程中生成有模式对话框,比如说在定时器中产生有模式对话框,因为在上一个对话框还未退出时,定时器消息又会引起下一个对话框的弹出。

同样的在你的对话框类中为了向调用者返回不同的值可以调用CDialog::OnOK()或是CDialog::OnCancel()以返回IDOK或IDCANCEL,如果你希望返回其他的值,你需要调用
CDialog::EndDialog( int nResult );其中nResult会作为DoModal()调用的返回值。

下面的代码演示了如何使用自己的函数来退出对话框:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

void CMy52_s1View::OnLButtonDown(UINT nFlags, CPoint point)

{//创建对话框并得到返回值

         CView::OnLButtonDown(nFlags, point);

         CTestDlg dlg;

         int iRet=dlg.DoModal();

         CString szOut;

         szOut.Format("return value %d",iRet);

         AfxMessageBox(szOut);

}

//重载OnOK,OnCancel

void CTestDlg::OnOK()

{//什么也不做

}

void CTestDlg::OnCancel()

{//什么也不做

}

//在对话框中对三个按钮消息进行映射

void CTestDlg::OnExit1()

{

来源:https://www.tulaoshi.com/n/20160219/1600583.html

延伸阅读
1、意图 有时候我们希望将非模态窗口显示为模态窗口。比如在IE的“文件”菜单下选择“打印”,弹出的“打印”对话框就是非模态的(也许我们不太清楚Microsoft的设计意图,一般来说这里的“打印”对话框应该是模态的)。这种情况下如何将“打印”对话框显示为模态的呢(这个对话框对我们来说是Black Box)? 2、简单实现 简单...
自绘对话框 作者:Alon 下载示例源代码 闲来无事,写了一个简单的对话框界面,希望给需要的朋友有所帮助。 界面如下: 界面很单调,我只是想说明一下如何实现界面的自绘。如果有需要,也可以绘制更复杂漂亮的界面。 程序的实现也不复杂,接下来就跟着我一步一步做。...
获取静态控件文本的方法:GetDlgItem函数获得对话框中控件的指针,然后调用GetWindowText获得文本。注意:静态控件的属性必须将Notify选为可能。同理:SetWindowText可以指定文本。 获取编辑框内容:GetDlgItem(ID)-GetWindowText(); 字符内容转换为数值:atoi()把字符串转换为数值;同理:数字到字符串itoa(); GetDlgItemText(ID)可以完成...
标签: Web开发
    1.将下面一段代码插入head与/head之间: script function rusure() {  question = confirm("确实要去进入吗?")  if (question !="0") { window.open("","测试公告窗口","width=340,height=163,toolbar=0,status=0,menubar=0,resize=0"); } } /script     2.在链接标签内加入onclick()语句...
手机QQ对话框没有视频对话选项   QQ对话框没有视频对话选项解决办法: 1、手机不支持视频聊天 2、对方手机或电脑端不支持视频聊天功能。 3、对方或自身手机是WP系统 4、客户端版本过低不支持视频通话 总结:QQ对话框没有视频对话选项一般都是上述几种情况引起的,如果除了上述集中外还是不能的话可以尝试...