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

<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);
}








  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值