#include <Windows.h>
//窗口过程回调函数
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//LONG WINAPI
//相当于int main()
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpszCmdline,
int nCmdShow)
{
HWND hwnd;//窗口句柄
MSG msg;//消息
WNDCLASS wc;//窗口类
//1.设计一个窗口类
wc.style = 0;//使用默认的样式
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;//窗口类额外数据 可以暂时忽略
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
wc.lpszClassName = "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);//键盘码翻译成ASCII码
DispatchMessage(&msg);//转发到窗口过程
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
RECT rect;
//对各种消息进行处理
switch (message)
{
case WM_SIZE:
//重画Paint
return 0;
case WM_LBUTTONDOWN:
//MessageBox(hwnd, TEXT("Mouse clicked"), TEXT("消息"), MB_OK);
//PostQuitMessage(0);
return 0;
case WM_PAINT://绘制消息
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
Ellipse(hdc, 0, 0, 200, 100);
DrawText(hdc, TEXT("HELLO WINDOWS!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hdc, &ps);
return 0;
case WM_DESTROY://销毁窗口消息(关闭)
PostQuitMessage(0);//关闭窗口
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
转载于:https://my.oschina.net/u/2480857/blog/637939