在MFC中,静态文本CStatic控件主要是用来作为标签,即作为注释用的。一般情况下不做消息响应。但是有时特殊情况下会做一些消息响应,比如处理单击事件STN_CLICKED等。

在VC2008下使用MFC创建了一个基于对话框的应用程序。添加一个CStatic控件,修改其Caption属性为:Number1:

默认情况下MFC中所有新添加的静态控件的ID是一样的,都是IDC_STATIC,如果想要使用某个STATIC控件进行消息响应,则首先需要修改该控件ID,比如将其ID修改成IDC_NUMBER1。

对于上述ID为IDC_NUMBER1的CStatic控件,在其属性中添加了STN_CLICKED的消息响应函数,

自动生成一个消息映射如下:

[cpp] view plaincopy
  1. BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
  2. ON_STN_CLICKED(IDC_NUMBER1, &CTestDlg::OnStnClickedNumber1)
  3. END_MESSAGE_MAP()

函数声明为:

[cpp] view plaincopy
  1. afx_msg void OnStnClickedNumber1();

实现体为:

[cpp] view plaincopy
  1. void CTestDlg::OnStnClickedNumber1()
  2. {
  3. // TODO: Add your control notification handler code here
  4. CString strNum1;
  5. GetDlgItem(IDC_NUMBER1)->GetWindowText(strNum1);
  6. if (strNum1 == _T("Number1:"))
  7. {
  8. GetDlgItem(IDC_NUMBER1)->SetWindowText(_T("数值1:"));
  9. }
  10. else
  11. {
  12. GetDlgItem(IDC_NUMBER1)->SetWindowText(_T("Number1:"));
  13. }
  14. }

接着运行了程序,当单击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消息相关推荐

  1. pyqt中treeview控件右键单击操作

    pyqt中treeview控件右键单击操作 pyqt开发GUI的第一篇文章 问题描述 pyqt开发GUI的第一篇文章 用pyqt5开发了一款图像处理软件,记下一些曾经困扰我的一些问题,有不对之处还请大 ...

  2. MFC CStatic控件在DrawItem中自绘

    转载自:也已时过境迁的MFC CStatic控件在DrawItem中自绘 实现PreSubclassWindow void CStaticHref::PreSubclassWindow() { // ...

  3. MFC中CSTATIC控件双击全屏/双击恢复

    双击全屏方法有两种 1.双击放大的时候调static控件的父句柄SerParent让控件的父句柄变成桌面,然后再提取桌面的分辨率用movewindow或者setwindowpos改变控件大小.恢复成原 ...

  4. MFC中动态创建控件以及事件响应实现方法

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...

  5. MFC中动态创建控件以及添加事件响应

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...

  6. MFC中动态创建控件及添加消息响应的方法实例

    动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框, ...

  7. ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件

    本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档.<?XML:NAME ...

  8. VC 在CStatic控件上绘图

    最近用MFC写一个程序,想在CStatic上绘制图片,一开始以为很简单,直接获取CStatic控件的DC绘图就是了,按照这个思路,编写函数,调用执行,结果大失所望,CStatic控件无动于衷,根本看不 ...

  9. qtextedit 默认文案_QT中常用的控件说明.md

    2主窗口类型 有三种窗口 QMainWindow QWiget QDialog QMainWindow:可以包含菜单栏,工具栏和标题栏,是 最常见的窗口显示形式. QDialog:是对话窗口的基类.没 ...

最新文章

  1. StringUtils 正则校验
  2. 阿里研究员:软件测试中的18个难题
  3. 7行代码AC——1010 一元多项式求导 (25分)
  4. mysql 导入unl文件_Informix和Oracel数据库导入UNL数据
  5. struts2_模型驱动
  6. 演练 获取所有电视频道 FullChannels.xml c# 1614256914
  7. 三人小组关系c语言编程,理性分析一下c-block三人组的实力
  8. 新模型SkipNet在ImageNet分类任务大放光彩!优化损失函数!
  9. 学会Web前端,高薪工作任你挑!
  10. 启动Eureka客户端服务时报错:java.net.ConnectException: Connection refused:connect
  11. VBA连接MySQL数据库以及ODBC的配置(ODBC版本和MySQL版本如果不匹配会出现驱动和应用程序的错误)...
  12. python编程菜鸟_python菜鸟教程
  13. 大嘴首发J2EE框架,Bigmouth-framework你值得拥有!
  14. 录制计算机课,如何录制直播网课?教你在电脑上如何录屏!
  15. 谣言止于“较真”,腾讯新闻推出微信新闻辟谣小程序
  16. nginx 如何查看访问ip和对应访问路径
  17. 如何利用嵌入式集成开发工具,让其更好地服务于设计?
  18. 金融科技开放势头下的众安新样本
  19. scala spark hbase 操作案例
  20. 【ucharts】uniapp -- 使用秋云 ucharts echarts高性能跨全端图表组件

热门文章

  1. keepAliveTime和线程工厂
  2. 高可用的eureka
  3. 数据库-聚合函数-max函数
  4. plsql(轻量版)_游标的使用1
  5. ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方...
  6. 公用技术——设计模式5——创建型模式——建造者模式——待补充
  7. 验证视图状态MAC失败的解决办法
  8. 使用 Content-Encoding: br 替换 Content-Encoding: gzip
  9. 设计模式(Design Patterns)详解
  10. 2016网络安全***赛记录