写一个窗口C语言程序并解释每一行
时间: 2024-04-29 19:25:30 浏览: 113
以下是一个简单的窗口C语言程序,并附上每一行的解释:
```c
#include <windows.h> // 引入Windows API头文件
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // 声明窗口过程函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) // WinMain是程序入口函数
{
const char CLASS_NAME[] = "Sample Window Class"; // 定义窗口类名
WNDCLASS wc = { }; // 定义窗口类结构体,初始化为0
wc.lpfnWndProc = WindowProc; // 设置窗口过程函数
wc.hInstance = hInstance; // 设置窗口实例句柄
wc.lpszClassName = CLASS_NAME; // 设置窗口类名
RegisterClass(&wc); // 注册窗口类
HWND hwnd = CreateWindowEx( // 创建窗口
0, // Optional window styles.
CLASS_NAME, // Window class
"Learn to Program Windows", // Window text
WS_OVERLAPPEDWINDOW, // Window style
// Size and position
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, // Parent window
NULL, // Menu
hInstance, // Instance handle
NULL // Additional application data
);
if (hwnd == NULL) // 如果创建窗口失败
{
return 0;
}
ShowWindow(hwnd, nCmdShow); // 显示窗口
MSG msg = { }; // 定义消息结构体,初始化为0
while (GetMessage(&msg, NULL, 0, 0)) // 获取消息循环
{
TranslateMessage(&msg); // 翻译消息
DispatchMessage(&msg); // 分派消息
}
return 0; // 返回程序退出码
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) // 窗口过程函数
{
switch (uMsg) // 消息类型判断
{
case WM_DESTROY: // 窗口销毁消息
PostQuitMessage(0); // 发送退出程序消息
return 0;
case WM_PAINT: // 窗口绘制消息
{
PAINTSTRUCT ps; // 定义绘制结构体
HDC hdc = BeginPaint(hwnd, &ps); // 获取绘制句柄
FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1)); // 绘制矩形
EndPaint(hwnd, &ps); // 结束绘制
}
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam); // 默认消息处理函数
}
```
此程序的功能是创建一个简单的Windows窗口,并在窗口内绘制一个矩形。
解释每一行的注释已经在代码中给出。
阅读全文