MFC Windows编程模型

#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);
}

猜你喜欢

转载自blog.csdn.net/god953/article/details/105395194
今日推荐