Win32 Windows编程 十二
一、对话框
1、对话框的分类
2、对话框的基本使用方式
3、对话框资源
4、有模式对话框的使用
5、 无模式对话框的使用
5.1 加入对话框资源
5.2 定义窗体处理函数
BOOL CALLBACK DialogProc(
HWND hWnd,
UINT UMsg,
WPARAM wParam,
LPARAM lParam
)
5.3 创建对话框
HWND CreateDialog( HINSTANCE hInstance, // handle to module LPCTSTR lpTemplate, // dialog box template name HWND hWndParent, // handle to owner window DLGPROC lpDialogFunc // dialog box procedure );
返回值是创建好的对话框窗体句柄
5.4 显示对话框
ShowWindow
5.5 关闭对话框
EndDialog
5.6 与有模式对话框相比
创建函数:有模式创建对话框 DialogBox
无模式对话框; CreateDialog
程序运行方式:有模式对话框堵塞。禁止其它窗体输入。
无模式对话框会立马返回让主程序继续运行
6 对话框消息
WM_INITDIALOG消息。用途类似于WM_CREATE消息,能够再对话框创建完毕后 进行数据初始化
他与WM_CREATE不同的是,WM_INITDIALOG消息会在对话框资源模板上的全部子控件(button等)创建完毕后再发送给对话框窗体处理函数
wParam - 当前接受输入焦点子控件窗体句柄
lParam - 创建时附带的參数
7 对话框和普通窗体的对照
7.1 创建方式不同
普通窗体 CreateWindow/Ex
对话框: DialogBox/CreateDialog
7.2 消息
普通窗体:会收到WM_CREATE
对话框: WM_INITDIALOG
7.3 关闭方式
普通窗体 : DestroyWindow等
对话框: EndDialog
二 子控件
1 由 Windows系统定义的窗体类型能够提供
对应的功能。包含button。文本编辑框, 静态框
2 空间的创建
都能够使用CreateWindow/CreateWindowEx创建, 并获取到空间HWND。
创建时每一个子控件都要有对应的ID号,
ID号尽量要求不反复。
1.3 控件的消息
子控件和父窗体(一般窗体或者对话框)的交换都是通过消息完毕的。假设子窗体状态发生变化,子窗体会向父窗体发送
对应的消息,
一般父窗体会使用SendMessage向子窗体发送消息。同一时候父窗体响应子窗体发送的消息一般在WM_COMMAND中进行处理
三 静态框
1 静态框的创建
窗体类的名称 - STATIC, 用于窗体上显示文字等,假设使用SS_ICON、SS_BITMAP风格能够显示ICON和BITMAP
文本静态框 - 创建时使用SS_SIMPLE就可以
ICON静态框 - 创建时使用SS_ICON, 而且将静态框的窗体名称设置成相应的ICON的资源ID号。比如 “#101”
2 静态框的命令响应
2.1 惊天狂要加入SS_NOTIFY风格
2.2 WM_COMMAND 进行处理
WPARAM - HIWORD 命令ID
LOWORD 静态框的窗体ID
LPARAM - 静态框创库句柄
3 静态框相关消息
调用SendMessage函数向空间发送消息
如: STM_SETICON消息改动控件显示图标
SendMessage( hStatic, STM_SETICON, (WPARAM)hIcon, 0 );
其它:
GetDlgItem 从窗体中获取指定ID的子控件的窗体句柄
四 button
1 button的分类
依据创建button时使用的风格:
1.1 下压式button PUSH_BUTTON
正常下压式button BS_PUSHBUTTON
三态下压式button BS_3STATE
1.2 分组式button
BS_GROUPBOX
1.3 CheckBoxbutton 多选button
BS_CHECKBOX
1.4 单选button Radio Box
BS_RADIOBUTTON
2.下压式button的使用:
2.1 创建button
创建时使用BUTTON
2.2 响应button的点击命令消息
WM_COMMAND
2.3 通知消息消息处理
SendMessage