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









原文地址:https://www.cnblogs.com/zfyouxi/p/5158844.html