#include<Windows.h>
//窗口处理函数
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{
//开发一个窗口
wchar_t szAppClassName[] = L"LIGEEDU";//wchar_t宽字符一个字母占两个字节
wchar_t szAppClassTitle[] = L"MY_FIRST";
//1,设计窗口类
WNDCLASS wc;
// CS_HREDRAW 窗口水平方向的大小或窗口的移动发生变化让它重新画一下窗口
//CS_VREDRAW 窗口竖直方向的大小或窗口的移动发生变化让它重新画一下窗口
wc.style = CS_HREDRAW | CS_VREDRAW;//窗口类的风格
//窗口处理函数 lpfnWndProc
wc.lpfnWndProc = WindowProc;
//窗口类的附加内存大小
wc.cbClsExtra = 0;//0字节
//窗口之间的附加内存大小
wc.cbWndExtra = 0;
//当前应用程序实例句柄
wc.hInstance = hInstance;
//图标句柄
wc.hIcon = NULL;//无
//加载光标
wc.hCursor = LoadCursor(NULL, IDC_HAND); //离子束 IDC_IBEAM 箭头 IDC_ARROW
//加载画刷
wc.hbrBackground = CreateSolidBrush(RGB(68, 214, 248));
//菜单名
wc.lpszMenuName = NULL;
//窗口类型名
wc.lpszClassName = szAppClassName;
//2,注册窗口类//ATOM 和WORD 都是unsigned short
if (0==RegisterClass(&wc))
{
MessageBox(NULL, L"此应用程序注册失败!!!",L"提示",MB_OK);
return 0;
}
//3,创建窗口//WS: window style
HWND hWnd=CreateWindow(szAppClassName, szAppClassTitle,WS_BORDER | WS_SYSMENU|WS_CAPTION | WS_MAXIMIZEBOX|WS_MINIMIZEBOX,100,100,640,480,NULL,NULL,hInstance,NULL);
if (hWnd == NULL)
{
MessageBox(NULL, L"创建窗口失败", L"提示", MB_OK);
return 0;
}
//4,显示和更新窗口
//SW_SHOW:以原来位置显示激活窗口
//SW_MAXIMIZE:以最大化显示激活窗口
//SW_NORMAL:以正常尺寸显示激活窗口
ShowWindow(hWnd, SW_SHOW);
//更新窗口
UpdateWindow(hWnd);
//5,消息循环
MSG msg;
//GetMessage的返回值:取出了WM_QUIT退出消息,返回0
while (GetMessage(&msg,NULL,0,0))
{
//将虚拟键消息转换为字符消息
TranslateMessage(&msg);
//将消息分发给窗口处理函数处理
DispatchMessage(&msg);
}
return 0;
}
//窗口处理函数
//CALLBACK就是__stdcall的宏定义
//LRESULT就是long的宏定义
//UINT是unsigned int
//WPARAM是unsigned int
//LPARAM是long
//HWND是窗口句柄,指针类型
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CLOSE://窗口关闭消息
//销毁窗口
DestroyWindow(hwnd);//会马上调用WM_DESTROY
//MessageBox(NULL, L"点了关闭", L"提示", MB_OK);
break;
case WM_DESTROY: //窗口销毁消息
PostQuitMessage(0);//发送一个WM_QUIT消息
break;
}
//默认窗口处理函数
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}