027.MFC_映射消息
映射消息
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_映射消息的更多相关文章
- create()创建的控件不能映射消息函数的解决
有时,使用create()在运行时创建的控件不能将消息映射到父窗口内,此时需要使用消息转发的机制,主要原理:注册一个全局的消息,针对接收消息的控件编写继承类,在该继承类中响应消息,并将已注册的全局消息 ...
- MFC入门
目录 001.MFC_应用程序类型 002.MFC_对话框_静态文本_编辑框 003.MFC_对话框_访问控件_7种方法_A 004.MFC_对话框_访问控件_7种方法_B 005.M ...
- ActiveMQ发消息和收消息
来自:http://blog.163.com/chengwei_1104/blog/static/53645274201382315625329/ ActiveMQ 是Apache出品,最流行的,能力 ...
- windows消息机制(MFC)
消息分类与消息队列 Windows中,消息使用统一的结构体(MSG)来存放信息,其中message表明消息的具体的类型, 而wParam,lParam是其最灵活的两个变量,为不同的消息类型时,存放数据 ...
- Apache Kafka:下一代分布式消息系统
[http://www.infoq.com/cn/articles/apache-kafka/]分布式发布-订阅消息系统. Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和可复制的提交日 ...
- MFC用PostMessage传递消息
1.自定义消息ID. #define WM_MY_MESSAGE (WM_USER+100) WM_USER为windows系统为非系统消息保留的ID,这里至少要用100,因为其它控件 ...
- 【转载】JAVA消息服务JMS规范及原理详解
转载:https://www.cnblogs.com/molao-doing/articles/6557305.html 作者: moyun- 一.简介 JMS即Java消息服务(Java Messa ...
- JAVA消息服务JMS规范及原理详解
JAVA消息服务JMS规范及原理详解 一.简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应 ...
- django 消息框架 message
在网页应用中,我们经常需要在处理完表单或其它类型的用户输入后,显示一个通知信息给用户. 对于这个需求,Django提供了基于Cookie或者会话的消息框架messages,无论是匿名用户还是认证的用户 ...
随机推荐
- CTR+A组合键 以及终止按键事件传递
Key UP 或Down 事件中 实现CTR+A全选 if ( Control.ModifierKeys==Keys.Control && e.KeyCode == Keys.A) ...
- @atcoder - AGC035D@ Add and Remove
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 N 张排成一行的卡片,第 i 张卡片上面写着 Ai. 重复 ...
- @loj - 2674@ 「NOI2012」美食节
目录 @description@ @solution@ @accepted code@ @details@ @description@ CZ 市为了欢迎全国各地的同学,特地举办了一场盛大的美食节. 作 ...
- @loj - 6353@「CodePlus 2018 4 月赛」组合数问题 2
目录 @description@ @solution@ @accepted code@ @details@ @description@ 请你找到 k 个不同的组合数,使得对于其中任何一个组合数 \(C ...
- BZOJ 1935 Tree 园丁的烦恼 CDQ分治/主席树
CDQ分治版本 我们把询问拆成四个前缀和,也就是二维前缀和的表达式, 我们把所有操作放入一个序列中 操作1代表在x,y出现一个树 操作2代表加上在x,y内部树的个数 操作3代表减去在x,y内部树的个数 ...
- phpstudy一直使用php5.6版本一直“”“报错应用程序无法正常启动0xc000007b”,亲测可行
http://www.php.cn/xiazai/gongju/1351 vc9和vc11-vc14运行库 2018-01-26 来源/作者:php中文网 «» 下载次数:7808 工具简介: php ...
- Java安装完毕后的环境配置
右键计算机=>属性=>高级系统设置=>环境变量=>系统变量=>新建系统变量 变量名:JAVA_HOME变量值:E:\Program Files\Java\jdk-9.0. ...
- 随机线性网络编码的C语言实现,实现可靠传输:原理(1)
线性方程组,大家都不陌生吧.来一组 A11 *X1 + A12 *X2 + A13 *X3 + A14 *X4 =Q1 A21 *X1 + A22 *X2 + A23 *X3 + A24 *X4 =Q ...
- Laravel 5.5 将会要求 PHP 7.0+
Laravel 5.5 都要用 PHP7 了呢!你还在用 PHP 5 吗? Laravel 一直是一个精 (sheng) 进 (ji) 不 (hen) 休 (kuai) 的框架.就在前几天,下图这位 ...
- Python--day69--ORM多对多查询
ManyToManyField class RelatedManager "关联管理器"是在一对多或者多对多的关联上下文中使用的管理器. 它存在于下面两种情况: 外键关系的反向查询 ...