当前位置: 首页 > news >正文

【转】VS2010/MFC编程入门之二十(常用控件:静态文本框)

【转】VS2010/MFC编程入门之二十(常用控件:静态文本框)

本文转自鸡啄米:http://www.jizhuomi.com/software/177.html  感 谢鸡啄米对本文的贡献。

 

上一节鸡啄米讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了。从本节开始鸡啄米将讲解各种常用控件的用法。常用控件主要包括:静态文本框、编辑框、单选按钮、复选框、分组框、列表框、组合框、图片控件、列表控件、树形控件和进度条控件等等。本节教程先来讲解静态文本框的使用。

       控件的通知消息

       在将静态文本框的使用之前,先大概讲讲控件的通知消息。

       当控件有事件发生时,它会向父窗口发送通知消息。最常发生的事件就是鼠标单击了,此时控件会向父窗口发送BN_CLICKED消息,实际上也就是给父窗口发送WM_COMMAND消息,在wParam参数中包含有通知消息码(鼠标单击时的通知消息码就是BN_CLICKED)和控件ID,lParam参数中包含了控件的句柄。在MFC消息映射机制概述中,鸡啄米讲过,消息就是由三个部分组成:消息值、wParam参数和lParam参数。

       为控件通知消息添加消息映射和消息处理函数的方法,之前不止一遍讲过了。现在再来具体说明下,控件的消息映射宏的格式大致是:

       ON_通知消息码(nID, memberFun)

       nID参数是控件的ID,memberFun参数是消息处理函数名。例如,ON_BN_CLICKED(IDC_BUTTON1, &CDlg::OnBnClickedButton1)。此消息映射宏应添加到BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间。

       消息处理函数声明的语法形式为:

       afx_msg void memberFun();

 VS2010/MFC编程入门之二十(常用控件:静态文本框)

       静态文本框的使用

       在前面鸡啄米的举例中,大家应该也清楚了静态文本框的一般作用,就是用于显示文字说明。MFC提供了CStatic类,封装了对静态文本框的所有操作。

       如果我们想在程序中动态创建静态文本框,而不是像前面那样直接从Toolbox中拖到对话框模板上,那么就需要使用CStatic类的成员函数Create。Create函数的原型如下:

virtual BOOL Create(
   LPCTSTR lpszText,
   DWORD dwStyle,
   const RECT& rect,
   CWnd* pParentWnd,
   UINT nID = 0xffff 
);

       参数说明:

       lpszText:指定要在控件中显示的文字。如果为NULL则不会显示任何文字。

       dwStyle:指定静态控件的风格。静态文本框一般都是对话框或其他窗口的子窗口,而且是可见的,所以应该包含WS_CHILD 和WS_VISIBLE风格,另外,MSDN中说明,还可以为其设置“static control styles”中风格的任意组合。下面大概为大家说明几个风格:

SS_BITMAP一个位图将显示在静态控件中,Create函数的lpszText参数字符串是资源文件中定义的位图名。此风格忽略宽度和高度参数,静态控件自动调整它的尺寸来适应位图
SS_BLACKFRAME指定一个具有与窗口边界同色的框,默认为黑色
SS_BLACKRECT指定一个具有与窗口边界同色的实矩形,默认为黑色
SS_CENTER使显示的正文居中对齐,正文可以换行
SS_GRAYFRAME指定一个具有与屏幕背景同色的边框
SS_GRAYRECT指定一个具有与屏幕背景同色的实矩形
SS_ICON使控件显示一个在资源中定义的图标,图标的名字由Create 函数的lpszText 参数指定,图标自动调整它的尺寸
SS_LEFT左对齐正文,正文能回绕
SS_LEFTNOWORDWRAP左对齐正文,正文不能回绕
SS_NOTIFY使控件能向父窗口发送鼠标事件消息
SS_RIGHT右对齐正文,可以回绕
SS_SIMPLE使静态正文在运行时不能被改变并使正文显示在单行中
SS_WHITEFRAME指定一个具有与窗口背景同色的框,默认为白色
SS_WHITERECT指定一个具有与窗口背景同色的实心矩形,默认为白色

       我们在对话框模板添加静态文本框时,可以在静态文本框的属性页中设置它的风格,很多都与上面的风格是对应的,例如,Simple属性就相当于SS_SIMPLE风格。

       rect:指定静态控件的位置和大小,它可以是RECT结构体类型,也可以是CRect类的对象。

       pParentWnd:指定静态控件的父窗口,通常是一个CDialog对象,不能是NULL。

       nID:指定静态控件的ID。

       CStatic类的成员函数简介

       简单介绍下CStatic类的主要成员函数,下面是成员函数列表。

GetBitmap获取由SetBitmap函数设置的位图的句柄
GetCursor 获取由SetCurSor设置的光标的句柄
GetEnhMetaFile获取由SetEnhMetaFile设置的增强图元文件的句柄
GetIcon获取由SetIcon设置的图标的句柄
SetBitmap设置要在静态控件中显示的位图
SetCursor设置要在静态控件中显示的光标图片
SetEnhMetaFile设置要在静态控件中显示的增强图元文件
SetIcon设置要在静态控件中显示的图标

       除了上述成员函数外,由于CStatic是CWnd的派生类,CWnd的很多成员函数也可以使用,例如,GetWindowText、GetWindowRect、SetWindowText等。

       静态文本框的基本应用方法在前面已经讲过,鸡啄米就不再举例,大家可以根据本节所讲进行试验,以对静态文本框有更多的认识。欢迎大家来鸡啄米交流学习。

posted on 2017-09-09 10:55 郑军学长 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/ZHENGJUNupperclassman/p/7497437.html

相关文章:

  • Shiro:ajax的session超时处理
  • cogs2223 [SDOI2016 Round1] 生成魔咒
  • Sql 时间做条件
  • SQL Server 数据库中的几个常见的临界值
  • A Research Problem UVA - 10837 欧拉函数逆应用
  • 洛谷P2344 奶牛抗议
  • python归档:笔记转化
  • 理解JS中的call、apply、bind方法
  • Number Math
  • 初学JAVA的变量作用域
  • Inno Setup自定义安装界面脚本
  • Spring AOP简单的配置(注解和xml配置)
  • Swift,枚举
  • java操作Excel
  • 'NoneType' object is not iterable
  • JavaScript 如何正确处理 Unicode 编码问题!
  • @jsonView过滤属性
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 10个确保微服务与容器安全的最佳实践
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • create-react-app项目添加less配置
  • Js基础知识(一) - 变量
  • nginx 负载服务器优化
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • node-glob通配符
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • ucore操作系统实验笔记 - 重新理解中断
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vue自定义指令实现v-tap插件
  • yii2中session跨域名的问题
  • 前端面试总结(at, md)
  • 前端之React实战:创建跨平台的项目架构
  • 入手阿里云新服务器的部署NODE
  • 原生js练习题---第五课
  • 最简单的无缝轮播
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​configparser --- 配置文件解析器​
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #QT(TCP网络编程-服务端)
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (39)STM32——FLASH闪存
  • (三)elasticsearch 源码之启动流程分析
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/C# 使用反射注册事件