创建自己的对话框窗口
发表于:2007-07-01来源:作者:点击数:
标签:
前言: 在许多情况下,我们所使用的大多数应用程序都会要求提供一些信息。例如,如何配置应用程序,或是否在退出前保存工作。大多数这种情况下,应用程序会打开一个新窗口来询问这些问题。除了使用 windows 公用对话框(如CfileDialog,CfontDialog,CcolorD
前言:
在许多情况下,我们所使用的大多数应用程序都会要求提供一些信息。例如,如何配置应用程序,或是否在退出前保存工作。大多数这种情况下,应用程序会打开一个新窗口来询问这些问题。除了使用
windows公用对话框(如CfileDialog,CfontDialog,CcolorDialog等)以为,有时候我们更想自己定制这样的对话框。本文就如何创建自己的对话框窗口作了简要阐述,希望对初学vc编程的朋友有所帮助。
正文:
我们以一个例子来说明如何定制自己的对话框窗口收集来自用户的信息,以及如何在对话框窗口关闭后读取用户选定的选项。
创建自己定制的对话框窗口
为了给应用程序创建自己定制的对话框,必须:
1、 在应用程序资源中加入另一个对话框
2、 设计对话框窗口的布局
3、 声明对话框将继承的类
4、 把变量与对话框中的控件相关联
做完这些之后,应用程序中的定制对话框窗口就准备好了。完成这些任务的步骤如下:
1、 选择Resource View选项卡,右键单击Dialog文件夹,选择Insert Dialog。
2、 将新加入的Dialog对象ID改为IDD_MESSAGEDLG。并设计对话框布局。
3、 设计完成后,打开Class Wizard,将弹出一对话框,询问是否为对话框创建一个新类,点击OK,在Name域输入类名CMsgDlg,确保Base Class设置在Cdialog。
4、 点击OK,保留其余缺省设置。
5、 为新对话框中的控件添加变量。
到现在就已经做完了使定制的对话框准备就绪的全部工作。剩下来就是在应用程序中使用这个对话框了。
在应用程序中使用自定制的对话框
使用自己定制的对话框方法和
Windows中内置的公用对话框相似。首先,必须给定制的对话框类声明一个实例,然后调用对话框的DoModal方法并捕获该函数的返回值。最后,读取和对话框中控件相关联的变量的值。
要实现主对话框与自己定制的对话框进行交互,还必须在主应用程序对话框的主源文件中加入定制对话框的头文件。在MyDialogDlg.cpp中加入#include "MsgDlg.h",注意这一句一定要加在#include "MyDialogDlg.h"之前。
现在,已经把所创建的定制对话框通知了应用程序主对话框,接下来必须为定制对话框声明一个变量。可以直接在MyDialogDlg.h中声明,
private:
CMsgDlg m_dMsgDlg;
也可以通过菜单添加。
现在定制对话框已经加入到了应用程序主对话框中,下面加入代码以使用此对话框。
为主对话框中的按钮添加消息函数,代码分别如下:
void CMyDialogDlg::OnBcustomdialog()
{
// TODO: Add your control notification handler code here
if( m_dMsgDlg.DoModal() == IDOK )
{
m_sResults = m_dMsgDlg.m_sMessage;
UpdateData( FALSE );
m_cWhichOption.EnableWindow( TRUE );
}
}
void CMyDialogDlg::OnBwhichoption()
{
// TODO: Add your control notification handler code here
switch( m_dMsgDlg.m_iOption )
{
case 0:
m_sResults = "The first option was selected.";
break;
case 1:
m_sResults = "The second option was selected.";
break;
case 2:
m_sResults = "The third option was selected.";
break;
case 3:
m_sResults = "The fourth option was selected.";
break;
default:
m_sResults = "no option was selected.";
break;
}
UpdateData( FALSE );
}
至此,就完成了自己定制的对话框程序,详见示例代码。如有不当之处,欢迎指正。
原文转自:http://www.ltesting.net