c/c++ win32 学习之一 window窗口开发基础

c/c++ win32 学习之一 window窗口开发基础

win32学习内容总结

创建window窗口(自定义)

步骤:
1.注册窗口类
2.创建窗口
3.显示窗口
4.刷新窗口
5.消息处理函数
6.消息循环

#include 

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(
	HINSTANCE hInstance,
	HINSTANCE hParInstance,
	LPSTR lpCmdLine,
	int nCmd
	)
{
	//1.注册窗口类
	WNDCLASSEXW wc;
	wc.cbSize = sizeof(WNDCLASSEX);				//大小
	wc.style = CS_HREDRAW | CS_VREDRAW;			//样式
	wc.lpfnWndProc = WndProc;					//消息处理函数
	wc.hInstance = hInstance;			        //实例句柄
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);	//背景颜色
	wc.cbClsExtra = 0;							//类的额外信息
	wc.cbWndExtra = 0;							//窗口的额外信息
	wc.lpszClassName = L"firstWindow";			//类名(多用于区别公司)
	wc.lpszMenuName = NULL;						//菜单名
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);	//鼠标样式 默认
	wc.hIcon = NULL;							//图标  
	wc.hIconSm = NULL;							//小图标
	
	RegisterClassExW(&wc);
	
	//2.创建窗口
	HWND hWnd = CreateWindowExW(
		NULL,								//额外样式
		wc.lpszClassName,					//类名
		L"我的第一个窗口",					//窗口名字
		WS_OVERLAPPEDWINDOW,				//窗口样式
		200, 100,							//坐标
		600, 600,							//大小
		NULL,								//父窗口句柄
		NULL,								//菜单
		wc.hInstance,						//类的实例句柄
		NULL								//参数
		);

	if (!hWnd)
	{
		MessageBoxExW(NULL, L"未创建窗口", L"提示", MB_OK, 0);
	}
	//3.显示窗口
	ShowWindow(hWnd, nCmd);
	//4.刷新窗口
	UpdateWindow(hWnd);
	//6.消息循环
	MSG msg;
	BOOL bRet;
	while (true)
	{
		if (PeekMessageW(&msg, nullptr, 0, 0, false))
		{
			if ((bRet = GetMessage(&msg, nullptr, 0, 0)) != 0)//检测到窗口退出,返回0,不退出,返回非0
			{
				if (bRet == -1)
				{
					//出现错误
				}
				else
				{
					TranslateMessage(&msg);		//翻译消息	主要针对键盘
					DispatchMessage(&msg);		//派发消息
				}
			}
			else
			{
				break;
			}
		}
	}
	
	return 0;
}

//5.消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
	case WM_DESTROY:				//销毁窗口
	{
		PostQuitMessage(0);			//退出程序
		break;
	}
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return NULL;
}

其他链接目录

  1. window窗口开发基础
  2. 消息循环
  3. 重要消息
  4. 菜单
  5. GDI画图
  6. 其他控件
  7. 文件操作
  8. 内存映射
  9. 进程线程
  10. 线程调度
  11. 网络编程

你可能感兴趣的:(window桌面开发)