VC2008中处理CStatic控件的单击STN_CLICKED消息
在MFC中,静态文本CStatic控件主要是用来作为标签,即作为注释用的。一般情况下不做消息响应。但是有时特殊情况下会做一些消息响应,比如处理单击事件STN_CLICKED等。
在VC2008下使用MFC创建了一个基于对话框的应用程序。添加一个CStatic控件,修改其Caption属性为:Number1:
默认情况下MFC中所有新添加的静态控件的ID是一样的,都是IDC_STATIC,如果想要使用某个STATIC控件进行消息响应,则首先需要修改该控件ID,比如将其ID修改成IDC_NUMBER1。
对于上述ID为IDC_NUMBER1的CStatic控件,在其属性中添加了STN_CLICKED的消息响应函数,
自动生成一个消息映射如下:
- BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
- ON_STN_CLICKED(IDC_NUMBER1, &CTestDlg::OnStnClickedNumber1)
- END_MESSAGE_MAP()
函数声明为:
- afx_msg void OnStnClickedNumber1();
实现体为:
- void CTestDlg::OnStnClickedNumber1()
- {
- // TODO: Add your control notification handler code here
- CString strNum1;
- GetDlgItem(IDC_NUMBER1)->GetWindowText(strNum1);
- if (strNum1 == _T("Number1:"))
- {
- GetDlgItem(IDC_NUMBER1)->SetWindowText(_T("数值1:"));
- }
- else
- {
- GetDlgItem(IDC_NUMBER1)->SetWindowText(_T("Number1:"));
- }
- }
接着运行了程序,当单击CStatic控件时,其值未发生变化,查阅了MSDN中关于Static Controls Messages 中的STN_CLICKED 消息,有如下描述:
STN_CLICKED |
This message is sent when the user clicks a static control that has the SS_NOTIFY style. |
原来需要在VS2008中修改ID为IDC_NUMBER1的CStatic控件的Notify属性(即SS_NOTIFY风格),将其改成TRUE就OK了,默认的属性为FASLE,即静态文本控件在默认情况下是不发送通告消息的。
总结如下,为了使得一个静态文本控件能够响应鼠标单击消息,那么需要进行两个特殊的步骤:
1、改变它的ID。(默认统一为IDC_STATIC)
2、在属性对话框中,将其notify属性设置为true。
VC2008中处理CStatic控件的单击STN_CLICKED消息相关推荐
- pyqt中treeview控件右键单击操作
pyqt中treeview控件右键单击操作 pyqt开发GUI的第一篇文章 问题描述 pyqt开发GUI的第一篇文章 用pyqt5开发了一款图像处理软件,记下一些曾经困扰我的一些问题,有不对之处还请大 ...
- MFC CStatic控件在DrawItem中自绘
转载自:也已时过境迁的MFC CStatic控件在DrawItem中自绘 实现PreSubclassWindow void CStaticHref::PreSubclassWindow() { // ...
- MFC中CSTATIC控件双击全屏/双击恢复
双击全屏方法有两种 1.双击放大的时候调static控件的父句柄SerParent让控件的父句柄变成桌面,然后再提取桌面的分辨率用movewindow或者setwindowpos改变控件大小.恢复成原 ...
- MFC中动态创建控件以及事件响应实现方法
本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...
- MFC中动态创建控件以及添加事件响应
本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...
- MFC中动态创建控件及添加消息响应的方法实例
动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框, ...
- ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件
本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档.<?XML:NAME ...
- VC 在CStatic控件上绘图
最近用MFC写一个程序,想在CStatic上绘制图片,一开始以为很简单,直接获取CStatic控件的DC绘图就是了,按照这个思路,编写函数,调用执行,结果大失所望,CStatic控件无动于衷,根本看不 ...
- qtextedit 默认文案_QT中常用的控件说明.md
2主窗口类型 有三种窗口 QMainWindow QWiget QDialog QMainWindow:可以包含菜单栏,工具栏和标题栏,是 最常见的窗口显示形式. QDialog:是对话窗口的基类.没 ...
最新文章
- StringUtils 正则校验
- 阿里研究员:软件测试中的18个难题
- 7行代码AC——1010 一元多项式求导 (25分)
- mysql 导入unl文件_Informix和Oracel数据库导入UNL数据
- struts2_模型驱动
- 演练 获取所有电视频道 FullChannels.xml c# 1614256914
- 三人小组关系c语言编程,理性分析一下c-block三人组的实力
- 新模型SkipNet在ImageNet分类任务大放光彩!优化损失函数!
- 学会Web前端,高薪工作任你挑!
- 启动Eureka客户端服务时报错:java.net.ConnectException: Connection refused:connect
- VBA连接MySQL数据库以及ODBC的配置(ODBC版本和MySQL版本如果不匹配会出现驱动和应用程序的错误)...
- python编程菜鸟_python菜鸟教程
- 大嘴首发J2EE框架,Bigmouth-framework你值得拥有!
- 录制计算机课,如何录制直播网课?教你在电脑上如何录屏!
- 谣言止于“较真”,腾讯新闻推出微信新闻辟谣小程序
- nginx 如何查看访问ip和对应访问路径
- 如何利用嵌入式集成开发工具,让其更好地服务于设计?
- 金融科技开放势头下的众安新样本
- scala spark hbase 操作案例
- 【ucharts】uniapp -- 使用秋云 ucharts echarts高性能跨全端图表组件
热门文章
- keepAliveTime和线程工厂
- 高可用的eureka
- 数据库-聚合函数-max函数
- plsql(轻量版)_游标的使用1
- ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方...
- 公用技术——设计模式5——创建型模式——建造者模式——待补充
- 验证视图状态MAC失败的解决办法
- 使用 Content-Encoding: br 替换 Content-Encoding: gzip
- 设计模式(Design Patterns)详解
- 2016网络安全***赛记录