#include <Windows.h>
//回调函数声明
LRESULT CALLBACK WndProc(
HWND,//H handler 句柄 , WDN窗口 //HWND 窗口句柄
UINT,
WPARAM,
LPARAM
);
//入口函数
int WINAPI WinMain(
HINSTANCE hInstance,//H INSTANCE实例 HINSTANCE实例句柄
HINSTANCE hPrevInstance,
LPSTR lpszCmdLine,
int nCmdShow
)
{
MSG msg;//创建消息句柄
HWND hwnd;//创建窗口句柄
WNDCLASS wc;//创建窗口类
//创建一个窗口需要
//(1)设计一个窗口类
wc.style = 0;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
//实例句柄
wc.hInstance = hInstance;
//windows标准图标
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
//鼠标指针的样式
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
//背景颜色
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
//菜单
wc.lpszMenuName = NULL;
//窗口类名称
wc.lpszClassName = TEXT("MyWndClass");
//(2)注册窗口
RegisterClass(&wc);
//(3)创建窗口
hwnd = CreateWindow(
TEXT("MyWndClass"),
TEXT("Hello SDK Application"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,//父窗口句柄
NULL,//窗口菜单句柄
hInstance,
NULL
);
//(4)显示和更新窗口
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
//(5)消息循环
while (GetMessage(&msg, NULL, 0, 0))
{
//翻译消息
TranslateMessage(&msg);
//转发到窗口过程
DispatchMessage(&msg);
}
return msg.wParam;
}
//窗口过程
LRESULT CALLBACK WndProc(
HWND hwnd,//窗口句柄
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
PAINTSTRUCT ps;
HDC hdc;//DC句柄
RECT rect;
//对消息进行处理
switch (message)
{
case WM_SIZE:
//重画
return 0;
case WM_LBUTTONDOWN://处理鼠标左键的按下
PostQuitMessage(0);
return 0;
case WM_PAINT://绘制消息
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
Ellipse(hdc, 0, 0, 600, 300);
DrawText(hdc, TEXT("Hello,Windows!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY://销毁窗口
PostQuitMessage(0);
return 0;
}
//windows自己去处理与此程序无关的消息
return DefWindowProc(hwnd, message, wParam, lParam);
}
MFC Windows编程模型
猜你喜欢
转载自blog.csdn.net/god953/article/details/105395194
今日推荐
周排行