Windows API编程02-详解信息框与编码(超级详细)

发布于:2022-10-21 ⋅ 阅读:(485) ⋅ 点赞:(0)

信息框即:

MessageBox(NULL, TEXT("Hello World!"), TEXT("Caption"), MB_OKCANCEL | MB_ICONINFORMATION | MB_DEFBUTTON2);

我们可以看到信息框提供了两个函数,实际上是两种编码的函数

一种是ASCII编码格式(A),一种是Unicode(W)

由于条件编译宏,所以他会自动判断是什么编码

 


MessageBox函数参数解释:

第1个参数hWnd指定消息框的所有者的窗口句柄,HWND是Handle Window的缩写,即窗口句柄。在Win32中句柄实际上就是一个32位的数值。句柄的实际取值对于程序来说并不重要,Windows通过句柄来标识它所代表的对象,比如读者单击某个按钮,Windows通过该按钮的窗口句柄来判断读者单击了哪一个按钮。

在Windows 中,句柄的使用非常频繁,以后还将遇到HIC0N(图标句柄)、HCURSOR(光标句柄)以及HBRUSH(画刷句柄)等 

在这里我们默认填写NULL

第2个参数lpText指定要显示的消息内容,LPCTSTR是一种Windows数据类型,在winnt.h头文件中定义如下

CONST表示常量字符串,不可修改,就是说LPCTSTR是一个指向wchar_t或char类型常字符串的指针。 后面将介绍wchar_t数据类型

第3个参数lpCaption指定消息框的标题。

 第4个参数uType指定消息框的图标样式和按钮样式。要指定在消息框中显示的按钮

我们甚至可以添加图标:

 

还可以指定消息框的默认按钮。默认按钮在显示消息框时突出显示的按钮,它有一个粗的边框,按下Enter键就相当于单击了这个按钮。

 MessageBox函数执行成功会返回一个整数值,指明用户单击了哪个按钮

#include <Windows.h>

int WINAPI WinMain(_In_ HINSTANCE hInstance,
	_In_opt_ HINSTANCE hPrevInstance,
	_In_ LPSTR lpCmdLine,
	_In_ int nShowCmd)
{
	int nRet;
	nRet = MessageBox(NULL, TEXT("Hello World!"), TEXT("Caption"), MB_OKCANCEL | MB_ICONINFORMATION | MB_DEFBUTTON2);

	if (nRet == IDOK)//判断用户是否点击了确定按钮
	{
		MessageBox(NULL, L"点击了确定按钮", L"cap", MB_OK);
	}


	return 0;
}

 

拓展:

TEXT宏: 

TEXT宏是windows程序设计中经常遇到的宏,

如果使用UNICODE字符集,则TEXT(“....”) ,相当于 L"....."  ; 如果使用普通的 ascii 字符集,则 TEXT(".....")  就是 普通的 "....."  字符串 ,这样程序移植性强

L:说明该字符串是Unicode字符集

关于字符集的全局设置:

 可以设置多字节,设置后就不用加L

 


网站公告

今日签到

点亮在社区的每一天
去签到