<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">1.在资源视图中选中Dialog,右键选择“插入Dialog”;</span>
2.选中该对话框,右键选择“添加类”
3.填写类名,注意类名以大写C开头儿,第二个字母也大写,比如CTest
4.生成的Test.h头文件内容如下:
#pragma once
// CTest 对话框
class CTest : public CDialogEx
{
DECLARE_DYNAMIC(CTest)
public:
CTest(CWnd* pParent = NULL); // 标准构造函数
virtual ~CTest();
// 对话框数据
enum { IDD = IDD_DIALOG1 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
};分析:有一个默认的构造函数,一个析构函数,没有对话框初始化函数virtual BOOL OnInitDialog();而假如该子对话框上有一些其他的控件,这些控件的初始化工作需要在OnInitDialog();中完成,这样就需要手动添加该函数。
头文件中增加:protected: virtual BOOL OnInitDialog();
源文件中增加:
BOOL CDATE::OnInitDialog()//没有virtual
{
CDialogEx::OnInitDialog();
//其他自己的初始化代码开始
//其他自己的初始化代码结束
return TRUE;
}5.如果需要在创建该子对话框时候,传进初始化数据,则需要创建自己的构造函数来完成该功能。比如:
在头文件中增加:CTest(CWnd* pParent = NULL,CString str1,CString str2); // 自己构造函数
其中,str1和str2是外界传进来的参数。用以初始化该子窗口中的某些成员数据,比如:CString m_str1; CString m_str2;
在源文件中增加:
CTest::CTest(CWnd* pParent = NULL,CString str1,CString str2) // 自己构造函数
{
m_str1 = str1;
m_str2 = str2;
}
6.如果要避免按下回车时候对话框消失的问题,需要在头文件添加如下:
BOOL PreTranslateMessage(MSG* pMsg);
在源文件中添加如下:
BOOL CDATE::PreTranslateMessage(MSG* pMsg)
{
//拦截回车键
if (WM_KEYDOWN == pMsg-> message && VK_RETURN == pMsg-> wParam)
{
return FALSE;
}
return CDialog::PreTranslateMessage(pMsg);
}
本文详细介绍如何在MFC中创建并定制对话框,包括插入对话框、添加类、自定义构造函数、初始化对话框及控件、拦截回车键等步骤。通过具体实例展示如何实现更高级的功能。
1285

被折叠的 条评论
为什么被折叠?



