win api先用Creat
时间: 2024-01-20 09:04:50 浏览: 25
eWindow函数创建一个窗口,该函数的原型为:
```
HWND CreateWindow(
LPCTSTR lpClassName, // 窗口类名
LPCTSTR lpWindowName, // 窗口标题
DWORD dwStyle, // 窗口样式
int x, // 窗口左上角x坐标
int y, // 窗口左上角y坐标
int nWidth, // 窗口宽度
int nHeight, // 窗口高度
HWND hWndParent, // 父窗口句柄
HMENU hMenu, // 菜单句柄
HINSTANCE hInstance, // 应用程序实例句柄
LPVOID lpParam // 创建窗口时传入的参数
);
```
其中,`lpClassName`参数指定了窗口类名,`lpWindowName`参数指定了窗口标题,`dwStyle`参数指定了窗口样式,`x`和`y`参数指定了窗口左上角的坐标,`nWidth`和`nHeight`参数指定了窗口的宽度和高度。
例如,以下代码可以创建一个简单的窗口:
```
#include <Windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 注册窗口类
WNDCLASS wc = { 0 };
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND);
wc.lpszClassName = "MyWindowClass";
RegisterClass(&wc);
// 创建窗口
HWND hWnd = CreateWindow(
"MyWindowClass",
"My Window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
640,
480,
NULL,
NULL,
hInstance,
NULL
);
if (hWnd == NULL)
{
MessageBox(NULL, "窗口创建失败!", "错误", MB_OK | MB_ICONERROR);
return 0;
}
// 显示窗口
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
// 消息循环
MSG msg = { 0 };
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return 0;
}
```
运行该程序后,将会创建一个名为"My Window"的窗口。窗口的样式为`WS_OVERLAPPEDWINDOW`,即标准的带有标题栏、边框和最大化、最小化按钮的窗口。窗口的大小为640x480,左上角坐标为默认值,即系统自动分配的位置。窗口类名为"MyWindowClass",将在后续使用`FindWindow`等函数时用到。`WndProc`函数为窗口过程,处理窗口消息。