#include <Windows.h> //包含应用程序所需要的数据类型和数据结构的定义
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //窗口函数说明
//--------------------初始化窗口类------------------------------------
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[] = "窗口"; //窗口类名
char lpszTitle[] = "My_Windows"; //窗口标题名
//窗口类定义
wndclass.style = 0; //窗口类型为缺省类型
wndclass.lpfnWndProc = WndProc; //定义窗口处理函数
wndclass.cbClsExtra = 0; //窗口类无扩展
wndclass.cbWndExtra = 0; //窗口实例无扩展
wndclass.hInstance = hInstance; //当前实例句柄
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
//窗口的最小化图标为缺省图标
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
//窗口采用箭头光标
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
//窗口背景为白色。加强制类型转换
//提示:不能将HGDIOBJ类型的值分配到HBRUSH类型的实体
//typedef void __RPC_FAR* HGDIOBJ,typedef void __RPC_FAR* HBRUSH
//定义一样,但是不同的数据类型,混用的话,类型检查的时候通不过
wndclass.lpszMenuName = NULL; //窗口中无菜单
wndclass.lpszClassName = lpszClassName; //窗口类名为“窗口”
//窗口类的注册
if (!RegisterClass(&wndclass)) //如果注册失败则发出警告
{
MessageBeep(0);
return FALSE;
}
//创建窗口
hwnd = CreateWindow
(
lpszClassName, //窗口类名
lpszTitle, //窗口实例的标题名
WS_OVERLAPPEDWINDOW, //窗口的风格
CW_USEDEFAULT,
CW_USEDEFAULT, //窗口左上角坐标为缺省值
CW_USEDEFAULT,
CW_USEDEFAULT, //窗口的宽高为缺省值
NULL, //此窗口无父窗口
NULL, //此窗口无主菜单
hInstance, //创建此窗口的应用程序的当前句柄
NULL //不使用该值
);
//显示窗口
ShowWindow(hwnd, nCmdShow);
//绘制用户区
UpdateWindow(hwnd);
//消息循环
while (GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam; //消息循环结束即程序终止时将消息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc
(
HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return (0);
}
Windows API 空壳应用程序
最新推荐文章于 2022-10-31 11:17:32 发布