Win 32 API 自定义窗口代替MessageBox显示

Win 32 API 自定义窗口代替messagebox显示

记录一下第一次做项目(研究生)的一个小小需求。如果大家有更好的方法希望大家在评论区留言哦。

需求就是自定义一个窗口代替messagebox,因为messagebox显示有限,所以有这个需求。由于第一次接触这个,在网上找了很多的资料,发现用API做的很少,过程很是心酸,不过也算是苦尽甘来吧,成功还是很开心的。

废话少说直接上代码,新建一个窗口,没有什么特别的

		HWND hMsgWindow = CreateWindow(TEXT("RULEJUDGE_WINDOW"), lpCaption, WS_OVERLAPPEDWINDOW , CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
			NULL, NULL, GetMyModuleHandle(), NULL);
		ShowWindow(hMsgWindow, SW_NORMAL);
		UpdateWindow(hMsgWindow);	

为什么会选择用控件呢,因为我要显示的文本是通过调用的,由于水平有限,不知道如何把调用参数传递给窗口回调函数里。

如果不在窗口回调函数中的VM_PAINT中显示,那么只要窗口边框调整,窗口内的东西就会重画,另外控件也有很多好处(暂时还没有发现)。

其次这是一个edit控件,而我只需要它显示,所以风格设定了只读。调用显示的内容格式是LPCTSTR,而SetWindowText函数是LPCSTR,所用需要转换,用了CString函数,而这个函数的头文件可以用
#include <atlstr.h>//LPCSTR与LPCTSTR转换

//edit control
		hWinRich = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("RichEdit20A"), NULL, ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_READONLY,
			CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hMsgWindow, NULL, NULL, NULL);
		GetClientRect
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值