Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2631314
  • 博文数量: 416
  • 博客积分: 10220
  • 博客等级: 上将
  • 技术积分: 4193
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-15 09:47
文章分类

全部博文(416)

文章存档

2022年(1)

2021年(1)

2020年(1)

2019年(5)

2018年(7)

2017年(6)

2016年(7)

2015年(11)

2014年(1)

2012年(5)

2011年(7)

2010年(35)

2009年(64)

2008年(48)

2007年(177)

2006年(40)

我的朋友

分类: WINDOWS

2006-12-31 13:30:44

网上SDK编程的资料真难找,想动态加载控件,可是找不到相关资料。自己去图书馆才查到一点信息,发出来大家分享,希望给同是初学者的朋友一点帮助。
 
其实用于窗口的函数大多可用在控件上,只要把控件当成窗口来处理就可以了。
 
创建控件的代码如下:
HWND ctrl = ::CreateWindowA("button",//控件类别
                            "动态",//控件文本
                            WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON ,//控件样式
                            0, //位置
                            0,//位置
                            100, //尺寸
                            20,//尺寸
                            hDlg,//父窗口句柄
                            (HMENU)50,//可以在这指定控件ID
                            g_hInstance,
                            NULL);
 
可以参照这种方式来操纵控件:
SendMessage(hwndButton, //控件句柄
BM_CLICK, //操纵方式,这里让按钮执行点击操作
NULL,NULL); //有的操纵方式要通过这两个形参传递参数
 
SendDlgItemMessage(hDlg, //父窗口句柄
ID_BUTTON, //控件ID
BM_CLICK, //操纵方式,这里让按钮执行点击操作
NULL, NULL); //有的操纵方式要通过这两个形参传递参数
用到的宏定义如 BM_CLICK 可以在 winuser.h 文件中找到。
 
控件类别介绍如下:
子窗口类型
类名
描述
按钮
Button
创建按键按钮、单选按钮和三态按钮。
静态文本框
Static
显示用户不可直接编辑的文本,一般为标题。
滚动条
ScrollBar
滚动视图。
列表框
ListBox
显示具有多个子项的列表框。
编辑框
Edit
允许用户直接编辑文本。
组合框
ComboBox
与列表框类似,但多一个编辑区域。
 
 
 
button
各种按钮,可以通过控件样式来指定按钮样式
按钮风格
描述
BS_AUTOCHECKBOX
创建一个自动选中的复选按钮,只有复选按钮在复选框里改设置值才起作用。
BS_AUTORADIOBUTTON
创建一个自动选中的单选按钮。
BS_AUTO3STATE
创建自动的三态按钮。
BS_CHECKBOX
创建一个复选按钮。
BS_DEFPUSHBUTTON
创建默认选中的按键按钮,当用户按下Enter键时,则表示选择该按键按钮。
BS_GROUPBOX
创建按钮组合框,当创建一组单选按钮或者复选按钮时,首先需要创建该按钮组合框。
BS_LEFTTEXT
创建单选按钮或复选按钮时,指定按钮名称的文本出现在左边。
BS_OWNERDRAW
创建自画按钮,必须先创建图形资源。
BS_PUSHBUTTON
创建按键按钮。
BS_RADIOBUTTON
创建单选按钮。
BS_3STATE
创建三态按钮
 
按钮有自己特殊的消息类型。当用户选择了按钮时,它将向父窗口发送WM_COMMAND消息,这些通知消息包含在wParam的高位字节中。
按钮的通知代码如表所示。
 
消息取值
描述
BN_CLICKED
表示用户单击了该按钮
BN_DOUBLECLICKED
表示用户双击了该按钮
BN_HILITE
表示按钮显亮
BN_UNHlLlTE
取消按钮显亮
BN_PAINT
绘制按钮
BN_DISABLE
表示按钮禁活
BN_PUSHED
用户选中该按钮并按下了Enter键
BN_SETFOCUS
输入焦点转移到该按钮
 
 
 
static
创建静态文本控件如果需要获得输入应该使用 edit 控件。
 
风格取值
描述
SS_LEFT
左对齐
SS_CENTER
居中
SS_RIGHT
右对齐
SS_GRAYRECT
显示一个灰色的矩形
SS_BITMAP
显示位图
SS_ICON
显示图标
SS_CENTERIMAGE
图象居中显示
 
它既不接收鼠标或键盘输入,也不向父窗口发送WM_COMMAND消息。
 
 
scrollbar
创建滚动条控件,它们是能在父窗口的显示区域的任何地方出现的子窗口。
可以使用两个滚动条样式SBS_VERT和SBS_HORZ中的一个来建立子窗口滚动条控件。
 
滚动条的样式风格如表所示。
 
风格取值
描述
SBS_BOTTOMALIGN
创建水平滚动条,滚动条在窗口的底端
SBS_HORZ
创建水平滚动条
SBS_LEFTALIGN
创建一个靠左对齐的垂直滚动条
SBS_mGHTALIGN
创建一个靠右对齐的垂直滚动条
SBS_SIZEBOX
创建一个对话框式的滚动条
SBS_TOPALIGN
适用于水平滚动条,顶端与指定的矩形对齐
SBS_VERT
创建垂直滚动条
 
滚动条的消息类型如表所示。
 
消息取值
描述
SBM_ENABLE ARROWS
激活或者关闭滚动条的滚动按钮
SBM_GETPOS
得到滚动条当前滚动按钮的位置
SBM_GETRANGE
得到滚动条当前设置的范围
SBM_GETSCROLLINFO
得到滚动条的相关信息,包括位置、大小等
SBM_SETPOS
设置滚动条滚动按钮的位置
SBM_SETRANGE
设置范围
SBM_SETRANGEREDRAW
当需要重画滚动条时发送设置最大和最小值位置的消息
SBM_SETSCROLLINFO
设置滚动条属性
WM_CTLCOLORSCROLLBAR
当滚动条改变时向父窗口发送设置背景颜色的消息
WM_HSCROLL
水平滚动条变化
WM_VSCROLL
垂直滚动条变化
 
 
 
listbox
创建列表框,它允许用户从多个对象中选择一项或多项,这些对象可以是文本、文件和位图等。
当列表框的项不能全部显示出来时,可以用滚动条来滚动显示。
 
可以指定如下式样。
 
风格取值
描述
LBS_EXTENDEDSEL
能通过Shift键或者鼠标进行多选
LBS_HASSTRINGS
可以用GetText函数得到列表框里选项的字符串
LBS_MULTICOLUMN
指定列表框以多列形式显示内容
LBS_MULTIPLESEL
用户可以选择多个项
LBS_NOINTEGRALHEIGHT
当应用程序创建列表框时,列表框的大小由系统指定
LBS_NOREDRAW
列表框不响应用户的修改,可以通过发送WM_REDRAW 来取消该设置
LBS_NOTIFY
让主窗口接收列表框的任何改变的消息
LBS_OWNERDRAWFIXED
主窗口负责列表框的重画,列表框里每项的高度相同
LBS_0WNERDRAWVARIABLE
主窗口负责列表框的重画,列表框里每项的高度可以变化
LBS_SORT
按各项名称的字母排序
LBS_STANDARD
等同于LBS_SORT和LBS_NOTIFY
LBS_USETABSTOPS
允许用户使用Tab键在各项中切换
LBS_WANTKEYBOARDINPUT
输入焦点在列表框时,任何键盘输入都会向父窗口发送WM_VKEYTOITEM或者WM_CHARTOITEM消息
LBS_DISABLENOSCROLI
当列表框的项不够时,垂直滚动条禁活:没有该属性时,滚动条隐藏
 
当用户对列表框进行了操作时,就会向主窗口发送一条消息。消息总是通过WM_COMMAND的形式发送给主窗口的。
wParam的低位字节表示列表框的标识符,高位字节表示消息的类型,lParam表示主窗口句柄。
列表框的消息类型如表所示。
 
消息取值
描述
LB_DELETESTRING
删除指定的选项
LB_ADDFILE
向列表框里增加一个文件(包括目录)
LB_FINDSTRING
在列表框里查找指定的项
LB_FINDSTRlNGEXACT
精确查找指定的项
LB_GETCOUNT
得到列表框里项的数目
LB_GETCURSEL
返回当前被选中选项的序号
LB_GETSEL
得到被选项的状态,如果出错,则返回零值
LB_GETSELCOUNT
得到被选中的个数
LB_GETTEXT
返回选中的文本,返回值为字符串长度
LB_GETTEXTLEN
返回字符串长度
LB_INITSTORAGE
向列表框增加项之前存储原来的内容
LB_INSERTSTRING
向列表框增加一项,但不重新排序
LB_ITEMFROMPOINT
返回离指定点最近项的序号
LB_RESETCONTENT
清除列表框里所有的项
LB_SELECTSTRING
寻找指定的项
LB_SELITEMRANGE
指定选择的范围
LB_SELITEMRANGEEX
选定或者删除指定的项
LB_SETCOLUMNWIDTH
设置列的宽度
LB_SETCOUNT
设置列表框里项的最大数目
LB_SETCURSEL
选中指定的项
LBN_DBLCLK
发送用户双击的消息
LBN_ERRSPACE
发送内存空间不够的消息
LBN_KILLFOCUS
当列表框失去焦点时发送该消息
LBN_SELCANCEL
当用户取消选择时发送该消息
LBN_SELCHANGE
当用户选择改变时发送该消息
LBN_SETFOCUS
当输入焦点转移到列表框时发送该消息
WM_CTLCOLORLISTBOX
在列表框重画时向父窗口发送该消息
WM_DELETEITEM
删除选项
WM_VKEYTOITEM
输入焦点在列表框里,用户按键时发送该消息
 
 
 
combobox
创建组合框。组合框兼具编辑框和列表框的功能,既能编辑选项,又能显示多个项。
 
可以指定如下式样。
 
风格取值
描述
CBS_AUTOHSCROLL
当用户在编辑区域键入字符时,列表框自动滚动,使当前项的名称与键入的字符排序相同
CBS_DROPDOWN
创建一个下拉式组合框
CBS_DROPDOWNLIST
创建一个下拉式列表框
CBS_HASSTRINGS
让应用程序能够使用GetText取得组合框里的文本
CBS_OEMCONVERT
把输入的文本将从ANSI码转换成OEM码,然后又转换成ANSI码;这样的目的是保证函数AnsiToOem的正确调用
CBS_OWNERDRAWFIXED
父窗口负责重画组合框里的各项,并使各项的高度一致
CBS_OWNERDRAWVARIABLE
父窗口负责重画组合框里的各项,各项的高度不一致
CBS_SIMPLE
组合框显示所有的项,当前的选项在编辑区域中显示
CBS_SORT
自动排序
CBS_DISABLENOSCROLL
组合框有垂直滚动条,当组合框的项不足时,滚动条禁活;没有该风格,则滚动条隐藏
CBS_NOINTEGRALHEIGHT
指定组合框的大小由程序精确控制,通常组合框的大小由组合框里项的数目决定
 

  应用程序的父窗口主要通过 WM_COMMAND消息与组合框通信,应用程序可以用CB_FINDSTRINGEXACT搜索指定的项,还可以发送CB_DELETESTRING删除指定的项,当需要删除所有的项时,发送消息CB_RESETCONTENT即可。
  组合框的编辑区域用来显示当前选中的项或者编辑组合框里没有的项。可以用CB_LIMITTEXT来限制输入文本的大小;为了获得编辑区域的文本,可发送CB_GETTEXT消息,这样就把文本复制到指定的字符串中,当需要设置编辑区域的文本时,只需要发送CB_SETTEXT消息。
  Windows API为组合框提供了文件显示和搜索的功能,它们主要通过函数DlgDirListComboBox和DlgDirSelectComboBox来实现。
 
消息取值
描 述
CB_ADDSTRlNG
增加一项
CB_DELETESTRING
删除指定的项
CB_DIR
发送搜索目录的消息
CB_FINDSTRING
搜索指定的项
CB_FINDSTRINGEXACT
精确搜索指定的项
CB_GETCOUNT
得到组合框中项的数目
CB_GETCURSEL
得到当前选中项的序号
CB_GETEDITSEL
得到编辑区域选中的文本
CB_GETLBTEXT
得到编辑区域的文本
CB_GETLBTEXTLEN
得到编辑区域中文本的长度
CB_LIMITTEXT
发送限制编辑区域文本的消息
CB_RESETCONTENT
删除所有的项
CB_SELECTSTRING
选中指定的字符串
CB_SETCURSEL
将光标设置在指定的位置
CB_SETDROPPEDWIDTH
设置下拉的宽度
CB_SETEDITSEL
选取编辑区域的文本
CBN_CLOSEUP
关闭组合框
CBN_DBLCLK
发送用户双击组合框中项的消息
CBN_DROPDOWN
下拉时发送消息
CBN_EDITCHANGE
发送编辑区域改变的消息
CBN_EDITUPDATE
发送编辑区域改变的消息,但在更新之前发送
CBN_ERRSPACE
发送内存不够的消息
CBN_KILLFOCUS
当组合框失去输入焦点时发送该消息
CBN_SETFOCUS
设置输入焦点
 
 
edit
创建一个编辑框控件,可以指定如下式样。
 
风格取值
描述
ES_AUTOHSCROLL
自动增加水平滚动条
ES_AUTOVSCROLL
当按下Enter键后,自动切换到下一页
ES_CENTER
文本居中
ES_LEFT
文本左对齐
ES_LOWERCASE
把所有的字母都小写
ES_MULTILINE
建立多行文本编辑框
ES_NOHIDESEL
当失去输入焦点时,选中的文本将隐藏
ES_OEMCONVERT
把输入的文本从ANSI码转换成OEM码,然后又转换成ANSI码,这样的目的是保证函数AnsiToOem的正确调用
ES_PASSWORD
控制编辑框作为密码文本框的字符形式
ES_RIGHT
文本右对齐
ES_UPPERCASE
将所有的字符转换成大写字符
ES_READONLY
文本只读
 
编辑框的操作以 WM_COMMAND的形式发送给父窗口。消息的有关信息仍然包含在参数wParam和IParam中。
wParam的低位字节包含编辑框的标识符,高位字节包含通知消息的类型,lParam包含编辑框的句柄。
编辑框的通知消息如表所示。
 
消息取值
作用
EM_CANUNDO
检验编辑框是否可以执行取消操作
EM_GETHANDLE
得到内存区文本的句柄,不适用于单行文本编辑框
EM_GETLIMITTEXT
得到文本限制的信息
EM_GETLINE
把指定行文本拷贝到字符串指针中
EM_GETLINECOUNT
得到编辑框的行的数目
EM_GETMARGINS
得到编辑框的边框宽度
EM_GETMODIFY
确认编辑框是否被修改
EM_GETPASSWORDCHAR
得到密码编辑框设置的密码字符
EM_GETRECT
得到文本矩形区域
EM_GETSEL
得到选中的文本
EM_GETTHUMB
得到编辑框滚动条的位置
EM_GETWORDBREAKPROC
得到折行函数的地址
EM_LIMITTEXT
设置用户能够输入的字符数目
EM_LINEINDEX
得到字符所在的行序号
EM_LINELENGTH
得到行的长度
EM_LINESCROLL
使文本滚动
EM_SCROLL
在多行编辑框中垂直滚动文本
EM_SCROLLCARET
把插入符移到编辑框的可见区
EM_SETHANDLE
给文本内存缓冲区设置句柄
EM_SETPASSWORDCHAR
设置密码字符
EM_SETTABSTOPS
在多行编辑框里设置制表符停止位置,但单行编辑框没有该消息
EM_UNDO
取消上一次操作
EN_CHANGE
发送编辑框改变的消息
EN_ERRSPACE
当文本内存不够时,发送该消息
EN_KILLFOCUS
当编辑框失去输入焦点时发送该消息
EN_MAXTEXT
当输入的文本超过最大允许数目时发送该消息
EN_SETFOCUS
设置输入焦点
EN_UPDATE
当编辑框被改变时发送该消息,与EN CHANGE不同,它在编辑框重画前发送
WM_COPY
拷贝消息
WM_CTLCOLOREDIT
只读编辑框重画时向父窗口发送该消息
WM_CUT
剪切消息
WM_PASTE
粘贴消息
WM_UNDO
取消上一次操作消息
 
 
 


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1466086


阅读(3845) | 评论(1) | 转发(0) |
0

上一篇:VC中文FAQ宝库

下一篇:命名法规则

给主人留下些什么吧!~~