创建有模式对话框

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

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

【 tulaoshi.com - 编程语言 】

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

CYourView::OnOpenDlg()

{

         CYourDlg dlg;

         int iRet=dlg.DoModal();

}

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

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

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

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

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

(本文来源于图老师网站,更多请访问http://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()

{

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

延伸阅读
Windows SDK笔记(五):非模式对话框 作者:冯明德 一、概述 使用DialgBox建立的对话框是“模式对话框”,只有关闭对话框后,程序的其他窗口才能进行操作。 与此相对应,存在“非模式对话框”,对话框建立后,并不强制要求用户立即反应,而是与其他窗口同时接受用户操作。 二、...
自绘对话框 作者: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()语句...
(1) 参数 typedef struct { DWORD lStructSize; HWND hwndOwner; HWND hInstance; COLORREF rgbResult; COLORREF * lpCustColors; DWORD Flags; LPARAM lCustData; LPCCHOOKPROC lpfnHook; LPCTSTR lpTemplateName; } CHOOSECOLOR, *LPCHOOSECOLOR; (2) API...