一.控件概念
·控件:特殊的一类”子”窗口,系统已经定义好了窗口类型.
创建方式和创建窗口类似,调用createWindows,每个控件都由ID
·父窗口直接通过sendmessage向控件发送消息.
控件事件发生后,会向所在的父窗口发送通知消息
·注意:创建窗口时必须添加两个属性
WS_CHILD:控件是放在我们的窗口上的,自然要作为窗口的子窗口
WS_CHILDWINDOW也一样,为了节约几个字母,用WS_CHILD吧。
WS_VISIBLE:设置可见,要想别人称赞你老婆漂亮,先让别人见你老婆
·创建窗口函数讲解
HWND WINAPI CreateWindow( 类名, 显示内容, 风格, nt x, int y,
int nWidth, int nHeight, 父窗口, 控件ID,
HINSTANCE hInstance, LPVOID lpParam );
·主要控件:按钮,编辑框,静态框,列表框,组合框,树控件,分组框,等
二.按钮
2.1基本概念
窗口类名 BUTTON
按钮分类:
下压式按钮 BS_PUSHIBUTTON/BS_DEFPUSHIBUTTON
复选框 BS_CHECKBOX/BS_AUTOCHECKBOX /BS_3STATE/ BS_AUTO3STATE
单选框BS_RADIOBUTTON/BS_AUTORADIOBUTTON
分组框BS_GROUPBOX
2.2下压式按钮
创建按钮:
CreateWindow(L"Button", L"按钮一", WS_VISIBLE | WS_CHILD |
BS_PUSHBUTTON, .... hwnd, (HMENU)IDB_ONE, hg_app, NULL);
按钮消息:WM_COMMAND
LOWORD(wParam) --- 保存的是按钮ID
HIWORD(wparam)---通知码BN_CLICKED
lParam 子窗口句柄
改变按钮文本信息: 向控件发送 WM_SETTEXT
2.3 分组框
窗口名称BUTTON
窗口风格 BS_GROUPBOX
2.4单选框
窗口名称BUTTON
窗口风格BS_RADIOBUTTON / BS_AUTORADIOBUTTON/WS_GROUP
WS_GROUP的单选框,到下一个WS_GROUP单选框之前,为1组
获取和设置选择状态(通知消息是BN_CLICKED)
BM_SETCHECK
BM_GETCHECK
案例:if( HIWORD(wParam)==BN_CLICKED ) {
HWND h3State = GetDlgItem( hWnd, 1005 );
LRESULT nRet = SendMessage( h3State, BM_GETCHECK, 0, 0 );
if( nRet == BST_CHECKED )}
2.5复选框
窗口类名:BUTTON
窗口风格:
BS_CHECKBOX - 点击选择时,需要自己维护选择状态
BS_AUTOCHECKBOX - 点击选择时,系统自动维护选择状态
BS_3STATE --变灰的三种状态
BS_AUTO3STATE-自动处理的三种状态
获取和设置选择状态(通知消息是BN_CLICKED)
BST_INDETERMINATE-设置灰色
BST_CHECKED ---设置选择
BST_UNCHECKED --设置不选择
设置状态SendMessage(... BM_SETCHECK,具体状态,必须为0);
获取状态SendMessage(... BM_GETCHECK,0,0);
案例SendMessage( 句柄, BM_SETCHECK,BST_INDETERMINATE, 0 );
三. 编辑框
3.1基本概念
窗口类名 EDIT
分类:
文字编辑框:显示单行文字/显示多行文字
密码编辑框:ES_PASSWORD,显示密码
窗口风格
3.2通知消息
在WM_COMMAND case下 处理这个参数
if (HIWORD(wParam) == EN_CHANGE && LOWORD(wParam) == nEditID)