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,无论是匿名用户还是认证的用户 ...
随机推荐
- HTML5八大特性助力移动WebApp开发
http://www.cocoachina.com/webapp/20150906/13344.html WebApp的实现基础就是HMTL5+JS+CSS3,但是WebApp还是基于浏览器的微网站开 ...
- Java练习 SDUT-2444_正方形
正方形 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 给出四个点,判断这四个点能否构成一个正方形. Input 输入的 ...
- 64位linux源码安装mysql
一:下载mysql http://dev.mysql.com/downloads/mysql/中的Generally Available(GA) Releases标签页,在MySQL Communit ...
- 巨蟒python全栈开发-第11阶段 ansible_project6
今日大纲: 1.计划任务前端页面 2.计划任务新增实现 3.计划任务编辑 4.项目详情 5.文件上传 6.replace模块介绍 1.计划任务前端页面 2.计划任务新增实现 3.计划任务编辑 4.项目 ...
- Cacti 加入多台主机带宽汇聚
前面我写了一个cacti加入主机带宽监控的博客.能够參考http://blog.csdn.net/dai451954706/article/details/35272465 .有时可能 ...
- Java练习 SDUT-1184_拍皮球
C语言实验--拍皮球 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 小瑜3岁了,很喜欢玩皮球,看来今后喜欢打篮球的^_ ...
- 卸载ROS命令
ROS有问题需要卸载只需输入以下命令: sudo apt-get purge ros-* sudo rm -rf /etc/ros
- js获取屏幕相关值
<html><script>function a(){document.write("屏幕分辨率为:"+screen.width+"*" ...
- 4.2.1 Data Flow-File Write-基本过程
- oracle函数 LTRIM(c1,[,c2])
[功能]删除左边出现的字符串 [参数]C1 字符串 c2 追加字符串,默认为空格 [返回]字符型 [示例] SQL> select LTRIM(' gao qian jing',' ') t ...