码迷,mamicode.com
首页 > 编程语言 > 详细

027.MFC_映射消息

时间:2019-05-09 00:44:10      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:ati   get   hwnd   using   scom   处理程序   message   gic   turn   

映射消息
MFC中的消息映射宏
  DECLARE_MESSAGE_MAP
  BEGIN_MEASSAGE_MAP
  END_MESSAGE_MAP
向导自动映射消息
手动添加映射消息

MFC会帮我们自动映射大部分消息,当MFC不能自动映射消息时就需要我们手动映射消息

一、建立名为message的MFC工程,并添加如图组件

技术图片

1、双击清空-自动button进入messageDlg.cpp,MFC会自动向导映射消息产生OnBnClickedButton1()函数

在函数中添加清空消息函数SetDlgItemText(IDC_EDIT1,_T(""));

//向导自动映射消息
//ON_BN_CLICKED(IDC_BUTTON1, &CmessageDlg::OnBnClickedButton1)
void CmessageDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
SetDlgItemText(IDC_EDIT1,_T(""));
}

2、不要点击清空-手动button,防止自动向导映射消息

(1)在messageDlg.h添加红色部分

public:
afx_msg void OnBnClickedButton1();
afx_msg void OnBnClickedButton2();

(2)messageDlg.cpp添加红色部分

BEGIN_MESSAGE_MAP(CmessageDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, &CmessageDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, &CmessageDlg::OnBnClickedButton2)
END_MESSAGE_MAP()

//手动映射消息
void CmessageDlg::OnBnClickedButton2()
{
SetDlgItemText(IDC_EDIT1,_T(""));
}

二、自动映射消息举例

1、修改对话框背景颜色

技术图片

 

messageDlg.cpp添加红色部分

BOOL CmessageDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CRect rect;
GetClientRect(rect);
CBrush brush; //创建画刷
brush.CreateSolidBrush(RGB(100,150,200)); //画刷属性实心rgb
pDC->FillRect(&rect,&brush);
return TRUE;

//return CDialogEx::OnEraseBkgnd(pDC);
}

2、统计文本框中字符个数并在static text中显示

技术图片

messageDlg.cpp添加红色部分

void CmessageDlg::OnEnChangeEdit1()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialogEx::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。

// TODO: 在此添加控件通知处理程序代码
HWND hEdit = ::GetDlgItem(m_hWnd,IDC_EDIT1);
int nLen = ::SendMessage(hEdit,WM_GETTEXTLENGTH,0,0);//计算文本框字符个数
TCHAR szBuf[128] = {0};
_stprintf(szBuf,_T("已输入:%d"),nLen);
//_stprintf(szBuf,_T("已输入 : %d"),nLen);
SetDlgItemText(IDC_STATIC,szBuf);
}

遇到错误:error C4996: ‘_swprintf‘: This function or variable may be unsafe. Consider using _swprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

在stdafx.h中添加
#define _CRT_SECURE_NO_DEPRECATE

#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1

 

027.MFC_映射消息

标签:ati   get   hwnd   using   scom   处理程序   message   gic   turn   

原文地址:https://www.cnblogs.com/Malphite/p/10836061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!