注册窗口类后,需要创建窗口。 使用的函数当然是(),而这个函数是基于窗口类的,所以需要指定几个参数来制定具体的窗口。 而如何创建一些无边框的窗口也是相当有技巧的,就是创建没有标题和边框的窗口,然后将程序的内容绘制在客户区中,这样就可以创建个性化的应用程序了。
接口说明
此函数创建覆盖窗口、弹出窗口或子窗口。 它指定窗口类、窗口标题、窗口样式以及窗口的初始位置和大小(可选)。 该函数还引用窗口的父窗口或窗口(如果存在)以及窗口的菜单。
要使用函数支持的扩展样式之外的扩展样式,请使用 而不是 。
API函数原型:
HWND(
, // 窗口类名
, // 窗口标题
_In_ DWORD, // 窗口样式或窗口格式
_In_ int x, // 初始 x 坐标
_In_ int y, // 初始 y 坐标
_In_ int , // 初始 x 方向大小
_In_ int , // 初始 y 方向大小
nt, // 父窗口句柄
, // 窗口菜单句柄
, //程序实例句柄
m // 创建参数
);
注:_In_表示参数为输入,_opt_表示参数为可选(并不是说没有参数,而是可以用宏来匹配参数)。
参数分析:
范围
意义
1. 窗口类名,可以是指向以 NULL 结尾的字符串或整数值的指针。
2.如果是字符串,则指定窗口的类名。这个类名可以是任何注册了函数的类名,也可以是任何预定义的控件类名
3.如果是整数,则为上次调用函数生成的全局变量。 小于此的 16 位数字必须为参数号的低 16 位,且参数的高位必须为 0
1. 窗口标题,指向以NULL结尾的字符串的指针
2. 如果窗口样式指定了标题栏,则 所指向的窗口标题将显示在标题栏上。
3、使用函数创建按钮、选择框、静态控件等控件时,可以使用 指定控件文本
指定创建窗口的样式(具体见下文↓)
1.指定窗口的初始水平位置(x坐标)
2.对于层叠或弹出窗口,x参数为窗口左上角在屏幕坐标系中的初始x坐标
3、对于子窗口来说,x是子窗口左上角相对于父窗口客户区左上角的初始x坐标。
4. 如果该参数设置为,系统将选择窗口默认的左上角坐标,并忽略 y 参数。 它仅对层叠窗口有效。 如果设置为弹出窗口或子窗口,则 x 和 y 参数设置为零。 。
1.指定窗口的初始垂直位置(y坐标)
2. 对于层叠窗口或弹出窗口,y参数是窗口左上角在屏幕坐标系中的初始y坐标。
3、对于子窗口来说,y是子窗口左上角相对于父窗口客户区左上角的初始y坐标。
4、对于列表框,y是列表框客户区左上角相对于父窗口客户区左上角的初始y坐标。
5. 如果使用样式位创建层叠窗口且x参数设置为 ,系统将忽略y参数
1.以设备单位指定窗口的宽度
2. 对于堆叠窗口, 的值是屏幕坐标中的窗口宽度或
3、如果是,系统为窗口选择一个默认的高度和宽度(默认宽度是从初始x坐标到屏幕右边缘,默认高度是从初始y坐标到目标顶部区域。),仅适用于堆叠窗口有效,如果为弹出窗口和子窗口设置了标志,则总和设置为零
1.以设备单位指定窗口的高度
2. 对于层叠窗口,是屏幕坐标中的窗口宽度
3. 如果设置为,系统忽略该参数,自动设置 和 的默认参数
1. 指向所创建窗口的父窗口或所有者窗口的句柄
2、创建子窗口或者依赖窗口,需要提供有效的窗口句柄
3.创建一个简单的消息窗口,可以提供或提供现有消息窗口的句柄
菜单
1. 指向窗口菜单句柄,或根据窗口样式指定子窗口标识符。
2.对于层叠或弹出窗口,hMenu指定窗口使用的菜单:如果使用菜单类,hMenu可以为NULL
3、对于子窗口,hMenu指定子窗口标识符(一个整数),对话框使用这个整数值来通知父类事件。应用程序确定子窗口标识符。 对于同一父窗口的所有子窗口,该值必须是唯一的。
与窗口关联的模块实例的句柄
1. 指向传递给窗口消息的值的指针。该值通过参数中的结构传递
2.如果应用程序调用创建MDI客户端窗口,它必须指向一个结构体
窗口样式分析
窗户样式
意义
创建一个有边框的窗口
创建一个带有标题框的窗口(包括样式)
创建一个子窗口。 此样式窗口不能有菜单或与样式一起使用。
与
在父窗口内绘图时,排除子窗口区域。 创建父窗口时使用此样式。
1.排除子窗口之间的相对区域,即当特定窗口收到消息时,该样式将所有堆叠的窗口排除在绘制之外,只重绘指定的子窗口。
2、如果不指定该样式且子窗口堆叠在一起,则当子窗口的客户区重绘时,相邻的子窗口也会重绘。
1. 创建一个初始状态为的子窗口。 处于禁用状态的窗口无法接受来自用户的输入信息。
2. 窗口创建完成后,可以调用该函数来启用窗口
创建一个具有对话框边框样式的窗口。 这种样式的窗口不能有标题栏。
1.指定一组“控制窗口”中的第一个“控制窗口”
2. 该“控制窗口”组由第一个“控制窗口”和随后定义的“控制窗口”组成。 从第二个“控制窗口”开始,每个“控制窗口”都有一种样式。
3. 每个组的第一个“控制窗口”具有样式,允许用户在组之间移动
4. 然后,用户可以使用光标在组内的控件之间更改键盘焦点
创建一个带有水平滚动条的窗口
创建一个初始状态最小化的窗口,样式相同
创建一个初始状态为最大化的窗口
创建一个带有最大化按钮的窗口。 该样式不能与 样式同时出现。 必须同时指定样式。
创建一个初始状态最小化的窗口,样式相同
创建一个带有最小化按钮的窗口。 该样式不能与 样式同时出现。 必须同时指定样式。
产生一个层叠窗口。 层叠窗口有标题栏和边框,样式与
相当于 ( | | | | | ),与样式相同
创建一个不能与该样式同时使用的弹出窗口。
相当于 ( | | ),但必须同时设置 和 才能使窗口中的某种顺序可见
创建一个具有可调整边框的窗口,其样式与
创建一个窗口,标题栏有窗口菜单,还必须设置样式
1. 创建一个“控制窗口”,当用户按 Tab 键时可以获得键盘焦点。
2. 按 Tab 键将键盘焦点转移到下一个带样式的“控制窗口”。
创建一个具有可调整边框的窗口,其样式与
产生一个层叠窗口。 层叠窗口有标题和边框,与样式相同
相当于 ( | | | | | ),与样式相同
创建一个最初可见的窗口
创建一个带有垂直滚动条的窗口
返回值:
1.如果函数成功,返回值是新窗口的句柄。
2. 如果函数失败,返回值为NULL。
应用实例
1.创建一个带有垂直和水平滚动条的窗口程序
hwnd =(,
TEXT("垂直和水平滚动条"),
| |, // | 上面两个参数就够了
,
,
,
,
无效的,
无效的,
,
无效的);
2、创建用户无法操作的win32程序
hwnd =(,
TEXT("垂直和水平滚动条"),
, // 修改为参数
,
,
,
,
无效的,
无效的,
,
无效的);
3.使用弹出窗口创建没有边框和标题栏的窗口
hwnd =(,
TEXT("垂直和水平滚动条"),
, // 弹出窗口,长宽需要修改
,
,
,
,
无效的,
无效的,
,
无效的);
四边形弹出窗口
hwnd =(,
TEXT("垂直和水平滚动条"),
|, // 弹窗,长宽需要修改
,
,
,
,
无效的,
无效的,
,
无效的);