MFC的对话框的控件的代码的添加

本文深入解析MFC框架中消息处理机制,包括消息映射与宏定义,如ON_WM_PAINT(),以及如何通过不同方式实现控件间的交互。探讨了控件交互的第一种方式,即直接调用MFC封装的类及其成员函数,以及第二种方式DDX,通过将控件与变量绑定,简化控件操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MFC的消息封装是通过消息映射处理的

MFC的消息处理定义了各种宏例如画图消息宏ON_WM_PAINT()

这些消息必须写在BEGIN_MESSAGE_MAP(theClass, baseClass)----END_MESSAGE_MAP()这两个宏之间

这就相当于把消息和消息处理函数添加到一个消息映射表中

宏展开后的样子,这个是展开按钮控件的消息

const AFX_MSGMAP* CTestDialogDlg::GetMessageMap()const 
{ return GetThisMessageMap(); } 

const AFX_MSGMAP* PASCAL CTestDialogDlg::GetThisMessageMap() 
{  
	typedef CTestDialogDlg ThisClass;						    
	typedef CDialogEx TheBaseClass;					    
	static const AFX_MSGMAP_ENTRY _messageEntries[] =   
	{
        { WM_COMMAND, (WORD)BN_CLICKED, (WORD)BTN_TEST, (WORD)BTN_TEST, AfxSigCmd_v(static_cast< AFX_PMSG > (&CTestDialogDlg::OnBnClickedTestmsg)) }, 
        {0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 }  
    };  
 
    static const AFX_MSGMAP messageMap =  
    { &TheBaseClass::GetThisMessageMap, &_messageEntries[0] };
    
    return &messageMap;  
}

第一种方式处理控件交互

通过封装好的MFC类,调用其内部的成员函数来实现控件交互

//MFC 使用this指针设置文本
this->SetDlgItemText(EDT_TEST, _T("文本"));
this->SendDlgItemMessage(EDT_TEST, WM_SETTEXT, 0, (LPARAM)_T("文本"));

// 文本控件所对应的对象
CWnd* pEdtWnd = this->GetDlgItem(EDT_TEST);

//通过对象来设置文本:两种方法
pEdtWnd->SetWindowText(_T("设置文本"));
pEdtWnd->SendMessage(WM_SETTEXT, 0, (LPARAM)_T("文本"));

 第二种方式处理控件交互DDX

DDX概念

将控件和一个变量绑定在一起,对变量的操作就是对控件的操作,在资源中选中控件点击右键选中添加变量就是把控件和变量绑定

有两种类型绑定一种是value,一种是Control,下列是value例子

语法

m_csEdtDDX  //与EDIT控件绑定过的变量

m_csEdtDDX = _T("F:\\CR33\\MFC\\02\\展开.h");

UpdateData(FALSE); //数据从变量到文本框(此时EDIT编辑框内会显示F:\\CR33\\MFC\\02\\展开.h)

UpdateData(TRUE)  //数据从控件到变量;
AfxMessageBox(m_csEdtDDX);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值