按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
HENHMETAFILE
指定要显示的增强图元文件
SetEnhMetaFile(HENHMETAFILE hMetaFile);
HENHMETAFILE GetEnhMetaFile() const; 获取由 SetEnhMetaFile 指定的图元文件
技巧:设置静态文本框的背景色和文本颜色
Windows 消息 WM_CTLCOLOR 用于控制对话框中控件的颜色,可以有选择性地设置静态
文本框控件的背景和颜色,如下面的代码段用于更改 ID 为 IDC_SMALL_STATIC 的静态文
本框的颜色和背景。
HBRUSH CRMBDlg::OnCtlColor(CDC* pDC; CWnd* pWnd; UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC; pWnd; nCtlColor);
// TODO: Change any attributes of the DC here
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
{
if(pWnd…》GetDlgCtrlID() == IDC_SMALL_STATIC)
{
pDC…》SetBkMode(TRANSPARENT);
pDC…》SetTextColor(RGB(10;10;255));
hbr = (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
else
{
hbr = CDialog::OnCtlColor(pDC;pWnd;nCtlColor);
}
}
break;
default:
break;
}
// TODO: Return a different brush if the default is not desired
return hbr;
·102 ·
…………………………………………………………Page 112……………………………………………………………
第 5 章 常用控件
}
5。2 文本编辑(Edit Box )控件
5。2。1 文本编辑控件的使用
文本编辑(Edit Box )控件是一种传统控件,实际上是一个简易的正文编辑器,用户可
以在编辑框中输入并编辑正文。
文本编辑框既可以是单行的,也可以是多行的,多行编辑框的编号是从零开始编排的。
在一个多行编辑框中,除了最后一行外,每一行的结尾处都有一对回车换行符(用“rn ”表
示),这对回车换行符是正文换行的标志,在屏幕上是不可见的。
文本编辑控件会向父窗口发出如表 5…4 所示的控件通知消息。
表 5…4 文本编辑控件的通知消息
通知消息 含义
编辑框的内容被用户改变了,与 EN_UPDATE 不同,该消息是在编辑框显示的正
EN_CHANGE
文被刷新后才发出的
EN_ERRSPACE 编辑框控件无法申请足够的动态内存来满足需要
EN_HSCROLL 用户在水平滚动条上单击鼠标
EN_KILLFOCUS 编辑框失去输入焦点
输 入 的 字 符 超 过 了 规 定 的 最 大 字 符 数 。 在 没 有 ES_AUTOHSCROLL 或
EN_MAXTEXT
ES_AUTOVSCROLL 的编辑框中,当正文超出了编辑框的边框时也会发出该消息
EN_SETFOCUS 编辑框获得输入焦点
EN_UPDATE 在编辑框准备显示改变了的正文时发送该消息
EN_VSCROLL 用户在垂直滚动条上单击鼠标
编辑框控件的相关操作函数封装在 MFC 类库中的 CEdit 类中。CEdit 类的成员函数 Create
用于创建按钮控件,该函数的声明如下:
BOOL Create(DWORD dwStyle;const RECT& rect;CWnd* pParentWnd;UINT nID);
其中参数 dwStyle 指定了编辑框控件风格,文本编辑控件的主要风格如表 5…5 所示。
rect 指定了编辑框的位置和尺寸。
pParentWnd 指定了父窗口,不能为 NULL 。文本编辑框的 ID 由 nID 指定。如果创建成
功,该函数返回 TRUE,否则返回 FALSE 。
表 5…5 文本编辑控件风格
控件风格 含义
当用户在行尾键入一个字符时,正文将自动向右滚动 10 个字符,当用户按回车
ES_AUTOHSCROLL
键时,正文总是滚向左边
ES_AUTOVSCROLL 当用户在最后一个可见行按回车键时,正文向上滚动一页
ES_CENTER 在多行编辑框中使正文居中
ES_LEFT 左对齐正文
ES_LOWERCASE 把用户输入的字母统统转换成小写字母
指定一个多行编辑器 。若多行编辑器不指定 ES_AUTOHSCROLL 风格,则会自
ES_MULTILINE 动换行,若不指定 ES_AUTOVSCROLL ,则多行编辑器会在窗口中正文装满时
发出警告声响
·103 ·
…………………………………………………………Page 113……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
续表
控件风格 含义
默认时,当编辑框失去输入焦点后会隐藏所选的正文,当获得输入焦点时又显
ES_NOHIDESEL
示出来。设置该风格可禁止这种默认行为
使编辑框中的正文可以在 ANSI 字符集和 OEM 字符集之间相互转换。这在编辑
ES_OEMCONVERT
框中包含文件名时是很有用的
ES_PASSWORD 使所有键入的字符都用“*”来显示
ES_RIGHT 右对齐正文
ES_UPPERCASE 把用户输入的字母统统转换成大写字母
ES_READONLY 将编辑框设置成只读的
使多行编辑器接收回车键输入并换行。如果不指定该风格,按回车键会选择默
ES_WANTRETURN
认的命令按钮,这往往会导致对话框的关闭
除了表 5…5 中的风格外,一般还要为文本编辑控件指定 WS_CHILD 、WS_VISIBLE 、
WS_TABSTOP 和 WS_BORDER 等窗口风格。创建一个普通的单行编辑框应指定风格
WS_CHILD|WS_VISIBLE|WS_TABSTOP |WS_BORDER|ES_LEFT ,这将创建一个带边框、左
对 齐 正 文 、 可 水 平 滚 动 的 单 行 编 辑 器 。 要 创 建 一 个 普 通 多 行 编 辑 框 , 还 要 附 加
ES_MULTILINE|ES_WANTRETURN|ES_AUTOVSCROLL |WS_HSCROLL| WS_VSCROLL
风格,这将创建一个可水平和垂直滚动的,带有水平和垂直滚动条的多行编辑器。
对于用对话框模板编辑器创建的编辑框控件,可以在控件的属性对话框中指定表 5…5 中
列出的控件风格。例如,在属性对话框中选择 Multi…line 项,相当于指定了 ES_MULTILINE
风格。对�