#include "stdafx.h"
#include "WindowsProject1.h"
//6.处理窗口过程
LRESULT CALLBACK WindowProc(
HWND hWnd, //消息所属的窗口句柄
UINT message,//具体的消息名称 WM_XXX 消息名
WPARAM wParam, //键盘附加消息
LPARAM lParam)//鼠标附加消息
{
//返回值用默认处理方式
return DefWindowProc(hWnd, message, wParam, lParam);
}
//程序入口函数
//APIENTRY=WINAPI 代表_stdcall 参数传递顺序:从右往左,依次入栈,并且在函数返回前清空堆栈
int WINAPI wWinMain(HINSTANCE hInstance, //应用程序实例句柄
HINSTANCE hPrevInstance,//上一个应用程序实例句柄,在win32环境下一般为NULL
LPWSTR lpCmdLine, //char argv[]
int nCmdShow) //显示命令,最大化、最小化、正常
{
//1.设计窗口
//2.注册窗口
//3.创建窗口
//4.显示和更新
//5.通过循环取消息
//6.处理消息 (窗口过程)
//-------------------------------------------------------------------
// 1.设计窗口
WNDCLASS wc;
wc.cbClsExtra = 0;//类的额外内存
wc.cbWndExtra = 0;//窗口额外内存
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//设置背景
wc.hCursor = LoadCursor(NULL, IDC_HAND);//设置光标,第一个参数为NULL,代表使用系统提供的光标
wc.hIcon = LoadIcon(NULL, IDI_ERROR);//设置图标
wc.hInstance = hInstance;//应用程序实例句柄,传入wWinMian中的形参即可
wc.lpfnWndProc = WindowProc;//回调函数 窗口过程
wc.lpszClassName = TEXT("WIN");//指定窗口类名称
wc.lpszMenuName = NULL; //菜单名称
wc.style = 0; //显示风格,0代表默认风格
//-----------------------------------------------------------------
//2.注册窗口
RegisterClass(&wc);
//3.创建窗口
/*
lpClassName, 类名
lpWindowName,标题名
dwStyle, 风格
x, 坐标
y,\
nWidth, 宽高
nHeight,
hWndParent, 父窗口 NULL
hMenu, 菜单 NULL
hInstance,实例句柄,hInstance
lpParam 附加值 鼠标附加值 NULL
*/
HWND hwnd=CreateWindow(wc.lpszClassName, TEXT("WIN"),WS_OVERLAPPED, WS_OVERLAPPED,
CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, NULL, hInstance, NULL);
//4.显示和更新
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);
//5.通过循环取消息
/*
HWND hwnd; 主窗口句柄
UINT message; 具体消息名称
WPARAM wParam; 附加消息 键盘消息
LPARAM lParam; 附加消息 鼠标消息
DWORD time; 消息产生时间
POINT pt; 附加消息 鼠标消息 x,y
*/
MSG msg;
while (1)
{
/*
_Out_ LPMSG lpMsg, 消息
_In_opt_ HWND hWnd, 捕获窗口 NULL代表捕获所有窗口
_In_ UINT wMsgFilterMin,最小和最大过滤消息,一般填入0
_In_ UINT wMsgFilterMax 填0代表捕获所有信息
*/
if (GetMessage(&msg, NULL, 0, 0)==FALSE) break;
//翻译消息
TranslateMessage(&msg);
//分发消息
DispatchMessage(&msg);
}
//6.处理窗口过程
}