📅  最后修改于: 2023-12-03 15:21:11.502000             🧑  作者: Mango
本示例展示了 WinMain 函数的基本用法,以及 Windows 程序的创建和运行步骤。
WinMain 函数是 Windows 应用程序的入口函数,它的原型如下:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
它接收四个参数:
hInstance
:当前应用程序实例的句柄。hPrevInstance
:前一个应用程序实例的句柄。lpCmdLine
:命令行参数,即应用程序启动时传入的参数。nCmdShow
:窗口显示方式。WinMain 函数的返回值为应用程序的退出码。通常情况下,返回值为 0 表示应用程序正常退出,非零值表示异常退出。
Windows 程序的创建过程主要涉及以下步骤:
以下是一个简单的 Windows 程序创建过程示例:
// 定义窗口类
WNDCLASS wc = {0};
wc.lpfnWndProc = DefWindowProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.lpszClassName = "WindowClass";
// 注册窗口类
RegisterClass(&wc);
// 创建窗口
HWND hWnd = CreateWindow("WindowClass", "My Window", WS_OVERLAPPEDWINDOW, 100, 100, 500, 500, NULL, NULL, hInstance, NULL);
// 显示窗口
ShowWindow(hWnd, nCmdShow);
// 进入消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// 退出应用程序
return (int)msg.wParam;
以下是一个完整的基于 WinMain 函数的 Windows 程序示例代码:
#include <windows.h>
// 窗口消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 10, 10, "Hello, Windows!", 15);
EndPaint(hWnd, &ps);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
default:
{
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 定义窗口类
WNDCLASS wc = {0};
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.lpszClassName = "WindowClass";
// 注册窗口类
RegisterClass(&wc);
// 创建窗口
HWND hWnd = CreateWindow("WindowClass", "My Window", WS_OVERLAPPEDWINDOW, 100, 100, 500, 500, NULL, NULL, hInstance, NULL);
// 显示窗口
ShowWindow(hWnd, nCmdShow);
// 进入消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// 退出应用程序
return (int)msg.wParam;
}
该程序创建了一个简单的窗口,并在窗口中显示了一句话。当用户关闭该窗口时,程序将正常退出。