按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
树型控件(TreeCtrl ) 主要用来显示树状结构数据 CTreeCtrl
选项卡控件(TabCtrl ) 主要用来显示多种重叠的相关对话框界面 CTabCtrl
5。1 静态文本(Static text)控件
静态文本控件是传统控件的一种,传统控件主要包括文本控件、命令按钮、选择框、单
选按钮、编辑框、列表框和组合框等,如图 5…1 所示。
…………………………………………………………Page 109……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
编辑框 单选按钮
复选框 组框
静态文本
列表框
组合框
普通按钮
图 5…1 主要传统控件样式
5。1。1 传统控件通知消息
在介绍静态文本控件的用法之前,先讲述传统控件的控件通知消息。控件通过向父窗口
发送控件通知消息来表明发生了某种事件。例如,在按钮上单击鼠标时,按钮控件会向父窗
口发送 BN_CLICKED 消息。传统控件的通知消息实际上是通过 WM_MAND 消息发给
父窗口的(滚动条除外 ),在该消息的 wParam 中含有通知消息码(如 BN_CLICKED )和控
件的 ID,在 lParam 中则包含了控件的句柄。
利用 ClassWizard 可以很容易地为控件通知消息加入消息映射和消息处理函数,这在上
一章中的对话框应用程序中已经讲解过了。传统控件的消息映射宏是ON_XXXX,其中XXXX
表示通知消息码,如 BN_CLICKED 。ON_XXXX 消息映射宏格式如下,该宏有两个参数,
一个是控件的 ID,一个是消息处理函数名:
ON_XXXX(nID;memberFxn)
消息处理函数的声明形式如下:
afx_msg void memberFxn();
有时,为了处理方便,需要把多个 ID 连续的控件发出的相同消息映射到同一个处理函
数上,这时就要用到 ON_CONTROL_RANGE 宏。例如,要处理一组单选按钮发出的
BN_CLICKED 消息,相应的消息映射如下:
ON_CONTROL_RANGE(BN_CLICKED;IDC_FIRST;IDC_LAST;OnRadioClicked)
ON_CONTROL_RANGE 消息映射宏的第一个参数是控件消息码,第二和第三个参数分
别指明了一组连续的控件 ID 中的头一个和最后一个 ID,最后一个参数是消息处理函数名。
函数 OnRadioClicked 的声明如下,该函数比上面的 OnAdd…memberFxn 多了一个参数 nID
以说明发送通知消息的控件 ID 。
afx_msg void OnRadioClicked(UINT nID);
·100 ·
…………………………………………………………Page 110……………………………………………………………
第 5 章 常用控件
另外需要注意的是:ClassWizard 不支持 ON_CONTROL_RANGE 宏,所以需要手工建立
消息映射和消息处理函数。
5。1。2 静态控件的使用
静态控件主要起说明和装饰作用,包括静态文本(Static Text )控件和图片(Picture )控
件两类。静态文本控件用来显示文本信息 。静态控件封装在 MFC 的 CStatic 类中,成员函数
Create 负责创建静态控件,该函数的声明如下:
BOOL Create( LPCTSTR lpszText; DWORD dwStyle; const RECT& rect; CWnd* pParentWnd; UINT nID =
0xffff );
其中参数 lpszText 指定了控件中显示的文本内容,dwStyle 指定了静态控件的风格,如表
5…2 所示。rect 是一个对 RECT 或 CRect 结构的引用,用来说明控件的位置和尺寸。pParentWnd
指向父窗口,该参数不能为 NULL 。nID 则说明了控件的 ID 。如果控件创建成功,该函数返
回 TRUE,否则返回 FALSE 。
表 5…2 静态控件风格
控件风格 含义
SS_BLACKFRAME 指定一个具有与窗口边界同色的框(默认为黑色)
SS_BLACKRECT 指定一个具有与窗口边界同色的实矩形(默认为黑色)
SS_CENTER 使显示的正文居中对齐,正文可以换行
SS_GRAYFRAME 指定一个具有与屏幕背景同色的边框
SS_GRAYRECT 指定一个具有与屏幕背景同色的实矩形
使控件显示一个在资源中定义的图标,图标的名字有 Create 函数的
SS_ICON
lpszText 参数指定
SS_LEFT 左对齐正文,正文能回绕
SS_LEFTNOWORDWRAP 左对齐正文,正文不能回绕
SS_NOPREFIX 使静态正文串中的&不是一个热键提示符
SS_NOTIFY 使控件能向父窗口发送鼠标事件消息
SS_RIGHT 右对齐正文,可以回绕
SS_SIMPLE 使静态正文在运行时不能被改变并使正文显示在单行中
SS_USERITEM 指定一个用户定义项
SS_WHITEFRAME 指定一个具有与窗口背景同色的框(默认为白色)
SS_WHITERECT 指定一个具有与窗口背景同色的实心矩形(默认为白色)
除了指定如表 5…2 所示的风格外,一般还要为控件指定 WS_CHILD 和 WS_VISIBLE 窗
口风格。一个典型的静态正文控件的风格为 WS_CHILD|WS_VISIBLE|SS_LEFT 。对于用对
话框模板编辑器创建的静态控件,可以在控件的属性对话框中指定控件风格。例如,可以在
静态正文控件的属性对话框中选择 Simple,这相当于指定了 SS_SIMPLE 风格,这在一定程
度上方便了控件的生成。
5。1。3 Cstatic 类的主要成员函数
CStatic 类主要的成员函数如表 5…3 所示,同时也可以利用 CWnd 类的成员函数
GetWindowText、SetWindowText 和 GetWindowTextLength 来查询和设置静态控件中显示的文
本信息。
·101 ·
…………………………………………………………Page 111……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
表 5…3 CStatic 类的主要成员函数
成员函数声明 用途
HBITMAP SetBitmap(HBITMAP hBitmap); 指定要显示的位图
HBITMAP GetBitmap() const; 获取由 SetBitmap 指定的位图
HICON SetIcon(HICON hIcon); 指定要显示的图标
HICON GetIcon() const; 获取由 SetIcon 指定的图标
HCURSOR SetCursor(HCURSOR hCursor); 指定要显示的光标图片
CURSOR GetCursor(); 获取由 SetCursor 指定的光标
HENHMETAFILE