winapi创建窗口

#include <windows.h>

//窗口过程函数
LRESULT CALLBACK DealMessage(HWND hWnd, //窗口句柄,消息所属的窗口
	UINT uMsg,	//消息标志
	WPARAM wParam, //附加信息
	LPARAM lParam
	)
{
	switch (uMsg)
	{
	case WM_LBUTTONDOWN: //鼠标左键按下
		MessageBox(hWnd, TEXT("ABC"), TEXT("鼠标左键按下"), MB_OK);
		break;
	case WM_PAINT:
	{
					 PAINTSTRUCT ps; //绘图结构体
					 HDC dc = BeginPaint(hWnd, &ps); //开始
					 TCHAR * p = L"aaaaaaa"; //转为宽字节
					 TextOutW(dc, 30, 30, p, wcslen(p));

					 EndPaint(hWnd, &ps);
					 break;
	}

	case WM_DESTROY:
		PostQuitMessage(2); //WM_QUIT, 给主函数 return msg.wParam
		break;
	default:
		return DefWindowProc(hWnd, uMsg, wParam, lParam);
	}


	return 0;
}


//WINAPI: 修饰函数,规定函数参数入栈从右往左,函数调用完毕,自动清理堆栈
//CALLBACK
int WINAPI WinMain(HINSTANCE hInstance, //应用程序实例
	HINSTANCE hPrevInstance, //上一个应用程序实例,不用
	LPSTR lpCmdLine, //命令行参数
	int nCmdShow //窗口显示的样式, 最大化,最小化
	)
{
	/*
	1、定义入口函数WinMain()
	2、创建一个窗口
	a)设计窗口类WNDCLASS(给成员变量赋值)
	b)注册窗口类
	c)创建窗口类
	d)显示和更新窗口
	3、消息循环
	4、窗口过程函数
	*/

	//a)设计窗口类WNDCLASS(给成员变量赋值)
	WNDCLASS wc;
	wc.cbClsExtra = 0; //类的附加信息
	wc.cbWndExtra = 0; //窗口附加信息
						//获取系统默认的白色画刷
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //背景色,必须写

	//wc.hCursor = NULL;//使用默认
	wc.hCursor = LoadCursor(NULL, IDC_HELP); //加载系统默认光标
	//wc.hIcon = NULL; 
	wc.hIcon = LoadIcon(NULL, IDI_WARNING); //加载系统默认图标

	wc.hInstance = hInstance; //应用程序实例
	wc.lpfnWndProc = DealMessage; //窗口过程函数名字,消息处理函数

	wc.lpszClassName = TEXT("abc"); //类的名字
	wc.lpszMenuName = NULL; //菜单名字
	wc.style = nCmdShow; //显示风格

	//b)注册窗口类, 告诉系统窗口过程函数的入口地址
	RegisterClass(&wc);

	//c)创建窗口类
	HWND hWnd = CreateWindow(TEXT("abc"), TEXT("hello, windwos"), WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
		NULL, NULL, hInstance, NULL);

	//d)显示和更新窗口
	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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值