1、定义入口函数WinMain()
2、创建一个窗口
1)设置窗口类WNDCLASS(给成员变量赋值)
2) 注册窗口类
3) 创建窗口类
4)显示和更新窗口
3、消息循环
4、窗口过程函数
代码
#include <windows.h>
//窗口过程函数
LRESULT CALLBACK WindowProc(
_In_ HWND hwnd,
_In_ UINT uMsg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
)
{
switch (uMsg)
{
case WM_LBUTTONDOWN: //鼠标左键按下
MessageBox(hwnd, TEXT("鼠标按下啦"), TEXT("WINAPI窗口"), MB_OK);
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint(hwnd, &ps);
TCHAR* szText = TEXT("哈哈,我画出来啦!");
TextOutW(hDC, 30, 30, szText, wcslen(szText));
EndPaint(hwnd, &ps);
}
break;
case WM_DESTROY:
PostQuitMessage(2); //WM_QUIT, 给主函数 msg.wParam
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{
/*
1、定义入口函数WinMain()
2、创建一个窗口
1)设置窗口类WNDCLASS(给成员变量赋值)
2) 注册窗口类
3) 创建窗口类
4)显示和更新窗口
3、消息循环
4、窗口过程函数
*/
WNDCLASS wc;
wc.cbClsExtra = 0; //类的附加信息
wc.cbWndExtra = 0; //窗口的附加信息
//GetStockObject() 获取系统默认的画刷
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //*背景色
wc.hCursor = 0; //使用默认
wc.hCursor = LoadCursor(NULL, IDC_HELP); //加载系统默认光标
wc.hIcon = LoadIcon(NULL, IDI_WARNING); //加载系统默认图标
wc.hInstance = hInstance; //应用程序的应用实例
wc.lpfnWndProc = WindowProc; //窗口过程函数
wc.lpszClassName = TEXT("中文"); //类名
wc.lpszMenuName = NULL; //菜单名字,没用
wc.style = nShowCmd; //显示风格
//注册窗口类
RegisterClass(&wc);
//创建窗口类
HWND hWnd = CreateWindow(TEXT("中文"), TEXT("我创建的WINAPI窗体"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
//显示窗口
ShowWindow(hWnd, SW_SHOWNORMAL);
//更新窗口
UpdateWindow(hWnd);
//消息循环
MSG msg;
//如果消息为WM_QUIT,返回0,退出
//如果出错,返回-1,不退出
while (GetMessage(&msg, NULL,0,0))
{
//虚拟按键转换为标准字符WM_CHAR
TranslateMessage(&msg);
//给操作系统分发消息
DispatchMessage(&msg);
}
return msg.wParam;
}