MFC学习笔记之常见控件
Windows系统下的应用是消息映射机制来处理消息的,应用程序中的控件也是如此,每个控件都有对应的消息事件。当然处理事件是需要开发者,自行去创建的。在消息映射机制中,消息包含三个参数:消息值、wParam参数和IParam参数。控件的消息映射宏的格式大致是 ON_消息码(控件ID,消息处理函数名)。具体的可以查阅MSDN文档和之前写的博客。下面开始介绍几种常见的控件。
0x00静态文本框
MFC的静态文本框包含在CStatic类中。
\创建函数
Create(
LPCTSTR lpszText,
DWORD dwStyle,
const RECT& rect,
CWnd *pParentWnd,
UINT nID = 0xffff
)
参数说明:
lpszText: 控件中显示的文字
dwStyle: 控件的风格
rect: 指定控件的位置和大小,其兼容RECT结构体或是CRect对象
pParaentWnd: 指定父窗口,不能为空,默认是CDialog对象
nID: 控件ID
\CStatci类的成员函数
_1 GetBitmap -> 获取由SetBitmap设置位图的句柄
_2 GetCursor -> 获取由SetSor设置的光标句柄
_3 GetEnhMetaFile -> 获取由SetEnhMetaFile设置的增强图元文件的句柄
_4 GetIcon -> 获取由SetIcon设置的图标句柄
_5 SetBitmap -> 设置控件中显示的位图
_6 SetSor -> 设置控件中显示的光标图片
_7 SetEnhMetaFile -> 设置控件中显示的增强图元文件
_8 SetIcon -> 设置控件中显示的图标
0x01编辑框
MFC中的编辑框包含在CEdit类中。
\编辑框创建
Create(
DWORD dwStyle,
const RECT &rect,
CWnd *pParantWnd,
UINT nID
)
参数说明:
dwStyle:编辑框的风格,以下是其一些风格的说明:
_1 ES_AUTOHSCROLL:当用户在行尾输入一个字符时,正文将自动向右滚动10个字符,当用户按回车键时,正文滚向左边
_2 ESAUTOVSCOROLL:当用户在最后一个可见行按回车键时,正文向上滚动一页
_3 ES_CENTER:在多行编辑框中使正文居中
_4 ES_LEFT:正文左对齐
_5 ES_LOWERCASE:把用户输入的字母均转换为小写字母
_6 ES_MULTILINE:指定一个多行编辑器。若多行编辑器不指定ES_AUTOSCROLL,则会自动换行,若不指定为ES_AUTOVSCROLL,则当多行编辑器会在窗口中正文装满时发出警告声音
_7 ES_NOHIDESEL:默认时,当编辑框失去输入焦点后会隐藏所选的正文,当获取输入焦点的时候又显示出来,本项风格可禁止这种行为。
_8 ES_NUMBER:只允许输入数字
_9 ES_OEMCONVERT: 使得正文在ANSI和OEM两个字符集间相互转化
_10 ES_PASSWORD: 将输入的字符均显示为*
_11 ES_READONLY: 编辑框设为只读
_12 ES_RIGHT: 正文右对齐
_13 ES_UPPERCASE: 把用户输入的字母均转换为大写字母
_14 ES_WANTRETURN:使多行编辑器接收利用回车键换行
_15 ES_MULTILINE:编辑框多行显示
rect: 指定控件的位置和大小,其兼容RECT结构体或是CRect对象
pParaentWnd: 指定父窗口,不能为空,默认是CDialog对象
nID: 控件ID
\CEdit类成员函数
1>获取编辑框中的内容(实际上为CWnd类的成员函数)
GetWindowText(HWND hWnd,LPTSTR lpString,Int nMaxCount)
参数说明:
hWnd:控件的句柄
lpString:指向接收文本的缓冲区和指针
nMaxCount:指定要保存在缓冲区的字符的最大个数(含NULL字符),若文本超过该值,则会被截断
2>设置编辑框中的文本内容(实际上为CWnd类的成员函数)
SetWindowText(HWND hWnd,LPTSTR lpString)
hWnd:控件的句柄
lpString:指向一个设置的文本字符串的指针
3>返回多行编辑框中指定索引的字符所在行的行号(从零开始),只适用于多行编辑框。nIndex等于-1则返回所选择正文的第一个字符所在行的索引。如果没有选择正文,则返回当前行的行号LineFromChar
4>返回由nLine指定行的起始字符在编辑框的整个字符串中的索引,只适用于多行编辑框。如果指定行超过编辑框的最大行数,则返回-1,而如果nLine为-1,则返回当前插入符所在行的起始字符的索引
LineIndex
5>获取选择正文的索引范围。nStartChar返回被选择正文的起始索引,nEndChar返回被选择正文的终止索引(不包括在选择范围内)。如果没有选择正文,则两者均为当前插入符的索引;其另一个重载函数的作用是,选择编辑框中的正文。nStartChar为选择开始处的索引,nEndChar为选择结束处的索引。如果nStartChar为0并且nEndChar为-1,则选择所有正文,而如果nStartChar为-1则取消所有选择。bNoScroll为FALSE时滚动插入符并使之可见,为TRUE时不滚动
GetSel
6>指向的字符串来替换选择的正文
ReplaceSel
7>获取正文的行数,只适用于多行编辑框。如果编辑框没有正文则返回1
GetLineCount
8>获取指定字符索引所在行的字节长度(行尾的回车和换行符不计算在内),参数nLine 说明了为字符索引。如果nLine 的值为-1,则函数返回当前行的长度(假如没有正文被选择),或选择正文占据的行的字符总数减去选择正文的字符数(假如有正文被选择)。若用于单行编辑框,则函数返回整个正文的长度
LineLength
9>用来获得指定行的正文(不包括行尾的回车和换行符),只适用于多行编辑框。参数nIndex 是行号,lpszBuffer 指向存放正文的缓冲区,nMaxLength 规定了拷贝的最大字节数。若指定的行号小于编辑框的实际行数,函数返回实际拷贝的字节数,若指定的行号大于编辑框的实际行数,则函数返回0。需要注意的是,GetLine 函数不会在缓冲区中字符串的末尾添加字符串结束符(NULL)
GetLine
10>获取编辑框能够接受的正文的最大字节数
GetLimitText
11>设置用户在编辑框中可以输入的正文的最大长度(字节数)。如果nChars为0,则最大长度为UINT_MAX个字节
LimitText
0x02按钮
MFC中的按钮被封装在CButton类中。
\按钮创建
Create(
LPCTSTR lpszCaption,
DWORD dwStyle,
const RECT &rect,
CWnd *pParantWnd,
UINT nID
)
参数说明:
dwStyle:编辑框的风格,以下是其一些风格的说明:
_1 BS_AUTOCHECKBOX:指定矩形按钮右侧带有标题的选择框,单击鼠标时,按钮会自动置反_2 BS_AUTORADIOBUTTON:指定一个单选按钮,在圆按钮的右边显示正文,单击鼠标时,按钮会自动置反、
_3 BS_AUTO3STATE:指定矩形按钮右侧带有标题的选择框,且有三种状态:选择、未选择和变灰,单击按钮时会改变状态
_4 BS_CHECKBOX:指定矩形按钮右侧带有标题的选择框
_5 BS_DEFPUSHBUTTON:指定默认的命令按钮,这种按钮的周围有一个黑框,用户可以按回车键来快速选择该按钮
_6 BS_GROUPBOX:指定一个组框
_7 BS_LEFTTEXT:使控件的标题显示在按钮的左边
_8 BS_OWNERDRAW:指定一个自绘式按钮
_9 BS_PUSHBUTTION:指定一个命令按钮
_10 BS_RADIOBUTTION:指定一个单选按钮,在圆按钮的右边显示正文
_11 BS_3STATE:指定矩形按钮右侧带有标题的选择框,且有三种状态:选择、未选择和变灰
rect: 指定控件的位置和大小,其兼容RECT结构体或是CRect对象
pParaentWnd: 指定父窗口,不能为空,默认是CDialog对象
nID: 控件ID
\CButton类成员函数
1>设置在按钮中显示的位图
HBITMAP SetBitmap(HBITMAP hBitmap)
参数说明:
hBitmap 位图的句柄
返回值:
按钮原来位图的句柄
2>获取之前由SetBitmap函数设置的按钮位图的句柄
HBITMAP GetBitmap( ) const
3>设置按钮的风格
void SetButtonStyle(UINT nStyle,BOOL bRedraw = TRUE)
参数说明:
nStyle 指定按钮风格
bRedraw 指定按钮是否重绘,为TRUE则重绘,否则不重绘,默认为重绘
4>获取按钮控件的风格
UINT GetButtonStyle( ) const
5>设置按钮的选择状态
void SetCheck(int nCheck)
参数说明:
6>获取按钮的选择状态
int GetCheck( ) const
返回值:
按钮状态,0表示未选中状态,1表示选中状态,2表示不确定状态(仅用于复选框)
7>设置要显示到按钮上的光标图
HCURSOR SetCursor(HCURSOR hCursor)
参数说明:
hCursor 光标的句柄
返回值:
按钮原来光标句柄
8>获取之前由SetCursor设置的光标的句柄
HCURSOR GetCursor( )
返回值:
按钮原来光标句柄
9>设置要在按钮上显示的图标
HICON SetIcon(HICON hIcon)
参数说明:
hIcon 图标的句柄
返回值:
按钮原来光标句柄
10>获取之前由SetIcon设置的图标的句柄
HICON GetIcon( ) const
返回值:
按钮原来光标句柄
11>设置按钮的高亮状态
void SetState(BOOL bHighlight)
参数说明:
bHighlight 指定按钮是否高亮显示,非0则高亮显示,否则取消高亮显示状态
12>获取按钮控件的选择状态、高亮状态和焦点状态
UINT GetState( ) const
返回值:
返回值与各个掩码相与来获得各种状态值,掩码与对应的相与结果说明如下:
掩码0x0003:用来获取单选按钮或复选框的状态。相与结果为0表示未选中,1表示被选中,2表示不确定状态(仅用于复选框)。
掩码0x0004:用来判断按钮是否是高亮显示。相与结果为非0值表示按钮是高亮显示的。当单击按钮并按住鼠标左键时,按钮会呈高亮显示。
掩码0x0008:相与结果为非零值表示按钮拥有输入焦点。