您的位置:首页 > 其它

MFC 基于对话框的项目如何添加子对话框以及相关知识

2014-08-22 14:25 302 查看
<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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: