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

控件的通知消息

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

当控件有事件发生时,它会向父窗口发送通知消息。最常发生的事件就是鼠标单击了,此时控件会向父窗口发送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();

 静态文本框的使用

在前面鸡啄米的举例中,大家应该也清楚了静态文本框的一般作用,就是用于显示文字说明。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等。

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

转自:http://www.jizhuomi.com/software/181.html

VS2010/MFC编程入门之二十(常用控件:静态文本框)的更多相关文章

  1. VS2010/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)

    前面一节讲了树形控件Tree Control的简介.通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件的创建.CTreeCtrl类的主要成员函数和应用实例. 树形控件的创建 MFC为树形控件提 ...

  2. VS2010/MFC编程入门之三十三(常用控件:标签控件Tab Control 下)

    上一节中鸡啄米讲了标签控件知识的上半部分,本节继续讲下半部分. 标签控件的创建 MFC为标签控件的操作提供了CTabCtrl类. 与之前的控件类似,创建标签控件可以在对话框模板中直接拖入Tab Con ...

  3. VS2010/MFC编程入门之二十八(常用控件:列表视图控件List Control 上)

    前面一节中,鸡啄米讲了图片控件Picture Control,本节为大家详解列表视图控件List Control的使用.      列表视图控件简介 列表视图控件List Control同样比较常见, ...

  4. 【转】VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)

    原文网址:http://www.jizhuomi.com/software/189.html 上一节鸡啄米讲了列表框控件ListBox的使用,本节主要讲解组合框控件Combo Box.组合框同样相当常 ...

  5. VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)

    上一节鸡啄米讲了列表框控件ListBox的使用,本节主要讲解组合框控件Combo Box.组合框同样相当常见,例如,在Windows系统的控制面板上设置语言或位置时,有很多选项,用来进行选择的控件就是 ...

  6. VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)

    前面两节讲了比较常用的按钮控件,并通过按钮控件实例说明了具体用法.本文要讲的是列表框控件(ListBox)及其使用实例. 列表框控件简介 列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选 ...

  7. VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)

    言归正传,鸡啄米上一节中讲了编辑框的用法,本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box ...

  8. VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)

    上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...

  9. VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)

    回顾上一节,鸡啄米讲的是组合框控件Combo Box的使用.本节详解滚动条控件Scroll Bar的相关内容. 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框 ...

随机推荐

  1. NodeJS-002-Expres启动

    1.打开app.js文件 2.在module.exports = app;之前输入: app.listen(8100,function(){ console.log("Server Star ...

  2. mac 获取idea&&datagrip激活码

    mac 版本的修改如下: 1). Command+Shift+G 2). /private/etc/ 3). 找到hosts文件,用文集编辑器打开 4). 输入0.0.0.0 account.jetb ...

  3. Mybatis头文件

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...

  4. openstack将本地实例迁移至ceph存储中

    需求: 最近在openstack上线了ceph存储,创建虚拟机和云硬盘都基于ceph卷进行存储和创建,但是之前openstack用的是本地存储,创建的所有实例都在本地文件中,当实例重启之后,opens ...

  5. 编译boost程序出现如下错误fatal error LNK1104: cannot open file 'libboost_system-vc100-mt-gd-1_54.lib'的解决方法

    对于如下程序: #include <iostream> #include <boost/asio.hpp> #include <boost/date_time/posix ...

  6. 谈谈后台服务的RPC和路由管理

    版权声明:本文由廖念波原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/147 来源:腾云阁 https://www.qclo ...

  7. console.log()的兼容性

    在别人那里看到的,兼容IE8-的console.log的实现,以前没想过. if(typeof console == "undefinde"){ this.console = {l ...

  8. intellij IDEA 报 非法字符 \65279 原因及解决方法

    用eclipse创建的项目导入到 intellij IDEA 之后 编译时包 非法字符 '\65279' 该问题产生的原因是 IDEA对以UTF8编码的文件保存时自动加上了BOM(UTF-8文件签名) ...

  9. Egret5.2.2 微信小游戏行的示例排行榜

    Egret5.2.2版本发布微信小游戏后,在开放数据域有一个默认排行榜.这个文件夹代码+图大小就22kb. 排行榜的效果就是示范用的,很丑...带翻页. 代码如下,基本就是使用canvas渲染了一个排 ...

  10. 【BZOJ4337】BJOI2015 树的同构 括号序列

    [BZOJ4337]BJOI2015 树的同构 Description 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点都有一个前驱 ...