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

摘要:
常用控件主要包括:静态文本框、编辑框、单选按钮、复选框、分组框、列表框、组合框、图片控件、列表控件、树控件、进度条控件等。在谈论静态文本框的使用之前,将简要介绍控件的通知消息。MFC提供了一个CStatic类,它封装了静态文本框上的所有操作。SS_NOTIFY:允许空间向父窗口发送鼠标事件消息。SS_SSIMPLE:使静态文本在运行时无法更改,并在单行中显示文本。SetEnhMetaFile:设置要在静态控件中显示的增强图元文件。

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

  控件的通知消息

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

  当控件有事件发生时,它会向父窗口发送通知消息。最常发生的事件就是鼠标单击了,此时控件会向父窗口发送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 contol 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:获取由SetEnhMetalFile设置的增强图元文件的句柄。

  GetIcon:获取由SetIcon设置的图标的句柄。

  SetBitmap:设置要在静态控件中显示的位图。

  SetCursor:设置要在静态控件中显示的光标图片。

  SetEnhMetaFile:设置要在静态控件中显示的增强图元文件。

  SetIcon:设置要在静态空间中显示的图标。

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

免责声明:文章转载自《MFC编程入门之二十(常用控件:静态文本框)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue中select框初始化首次触发change事件问题Linux CA下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

学习:MFC的CWinApp和CFrameWnd

前言:MFC后面底层运行的讲解理解不了,所以自己就直接先去学实际利用方面的了,以后自己想看再试着补上 创建MFC窗口需要用来的类: CWinApp CFrameWnd CWinApp是一个基类,你通过它来继承Windows应用程序对象。应用程序对象为你提供了初始化应用程序(以及它的每一个实例)和运行应用程序所需的成员函数。 每个使用微软基础类库的应用程序...

WinForm设置控件焦点focus

winform窗口打开后文本框的默认焦点设置,进入窗口后默认聚焦到某个文本框,两种方法: ①设置tabindex 把该文本框属性里的tabIndex设为0,焦点就默认在这个文本框里了。 ②Winform的Activated事件 在Form的Activated事件中添加textBox1.Focus(), 即可获得焦点。 private void Form1_...

Debug与Release的区别

  Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译选项。如果是基于ATL的,则Debug和Release版本对DLL的要求差不多。如果采用的编译选项为使用MFC动态库,则需要MFC42D.DLL等库支持,而Release版本需要MFC42.DLL支持。Release  Buil...

第二百一十一节,jQuery EasyUI,ValidateBox(验证框)组件

jQuery EasyUI,ValidateBox(验证框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 4.自定义验证 本节课重点了解 EasyUI 中 ValidateBox(验证框)组件的使用方法,这个组件依赖于 Tooltip(提示框)组件。 一.加载方式 class 加载方式 <input id="email"cla...

java 利用反射调用静态方法的示例

内容简介 主要介绍使用反射的机制来调用执行类中的静态方法。 静态方法 public class GisUtil { private final static Logger logger = LoggerFactory.getLogger(GisUtil.class); public static ExportMethodResu...

MFC_简易文件管理器

练习_简易文件管理器 Edit1编辑框绑定变量,初始化内容 m_EditCtrl = L"D:";   添加List控件,属性设置report,OnInitDialog()函数里添加信息 // 初始化函数 BOOL CFileManagerDlg::OnInitDialog() { CDialog::OnInitDialog(); ​ /...