应用程序创建的第一个窗口通常是【主窗口】.使用CreateWindowEx函数创建主窗口,指定窗口类,窗口名称,窗口样式,大小,位置,菜单句柄,实例句柄和创建数据。主窗口属于应用程序定义的窗口类,因此您必须注册窗口类,并在创建主窗口之前为该类提供一个窗口过程。
大多数应用程序通常使用WS_OVERLAPPEDWINDOW样式来创建主窗口。这种风格给窗口一个标题栏,一个窗口菜单,一个尺寸边框,并最大限度地减少和最大化按钮。CreateWindowEx函数返回一个唯一标识窗口的句柄。
以下示例创建属于应用程序定义的窗口类的主窗口。窗口名称“主窗口”将出现在窗口的标题栏中。通过将WS_VSCROLL和WS_HSCROLL样式与WS_OVERLAPPEDWINDOW样式相结合,应用程序除了由WS_OVERLAPPEDWINDOW样式提供的组件之外,还会创建一个包含水平和垂直滚动条的主窗口。CW_USEDEFAULT常数的四次出现将窗口的初始大小和位置设置为系统定义的默认值。通过指定NULL而不是菜单句柄,窗口将为窗口类定义菜单。
HINSTANCE hinst;
HWND hwndMain;
//创建主窗口。
hwndMain = CreateWindowEx(
0, //没有扩展样式
"MainWClass", // 班级名称
"Main Window", //窗口名称
WS_OVERLAPPEDWINDOW | //重叠窗口
WS_HSCROLL | //水平滚动条
WS_VSCROLL, //垂直滚动条
CW_USEDEFAULT, //默认水平位置
CW_USEDEFAULT, //默认垂直位置
CW_USEDEFAULT, //默认宽度
CW_USEDEFAULT, //默认高度
(HWND) NULL, //没有父或所有者窗口
(HMENU) NULL, //使用类菜单
hinstance, //实例句柄
NULL); //没有窗口创建数据
如果(!hwndMain)
return FALSE;
//使用程序指定的标志显示窗口
//启动应用程序,并发送应用程序
//一个WM_PAINT消息。
ShowWindow(hwndMain, SW_SHOWDEFAULT);
UpdateWindow(hwndMain);
请注意,上述示例在创建主窗口后调用ShowWindow函数。这样做是因为Windows在创建后不会自动显示主窗口。通过将SW_SHOWDEFAULT标志传递给ShowWindow,应用程序允许启动应用程序的程序设置主窗口的初始显示状态。UpdateWindow功能将窗口发送第一个WM_PAINT消息。