慢羊羊的空间

无为,无我,无欲,居下,清虚,自然

实现简单的询问对话框

游戏结束的时候,通常会简单的弹出一个对话框询问用户是否要重新来一句,如下图:

这篇文章就简单讲解一下这个功能如何实现。

首先,我们需要使用一个 Windows API 函数:MessageBox。该函数原型如下:

int MessageBox(
	HWND hWnd,          // handle to owner window
	LPCTSTR lpText,     // text in message box
	LPCTSTR lpCaption,  // message box title
	UINT uType          // message box style
);

第一个参数 hWnd 是指向父窗口的句柄,可以通过 EasyX 的函数 GetHWnd() 得到绘图窗口的句柄;

第二个参数 lpText 是要显示的字符串;

第三个参数 lpCaption 是提醒对话框的标题显示字符串;

第四个参数 uType 是对话框的按钮类型及属性,相当丰富,详细请看 MSDN,稍后的范例仅仅列出来一些常用的值。

返回值表示用户点选的按钮。

不多说了,直接写两个例子吧,相信大家一看就懂:

例 1,实现等待用户按“确定”的功能:

HWND wnd = GetHWnd();
MessageBox(wnd, "您的系统版本太低,请升级系统。", "警告", MB_OK | MB_ICONWARNING);

例 2,实现文章开始的图片那样的对话框,当用户选择“是”,执行 NewGame(),否则执行 Quit():

HWND wnd = GetHWnd();
if (MessageBox(wnd, "游戏结束。\n重来一局吗?", "询问", MB_YESNO | MB_ICONQUESTION) == IDYES)
	NewGame();
else
	Quit();

更多的使用方法,请参考 MSDN。

分享到