CPPMessageBox v1.0






4.89/5 (49投票s)
扩展的 MessageBox 类
目录
- 引言
- PPMessageBox API 方法
- PPMessageBoxIndirect API 方法
- PPMSGBOXAREA_BK 结构
- PPMSGBOXPARAMS 结构
- CPPMessageBox 类
- 如何使用?
- 历史
- 版权和免责声明
- 联系作者
引言
另一个 MessageBox:CodeProject 网站提供了更多作为标准 MessageBox
扩展的解决方案。那么为什么还要再来一个呢?你可能会问。除非我自己的项目真正需要,否则我不会开发类。长期以来,我一直使用 Hans Dietrich 的 "XMessageBox - 一个逆向工程的 MessageBox()" 类。这是一个不错的类,我感谢他的工作。然而,所有事物都有终结。这个类已经不能满足我了。我希望有一个类可以让我控制消息文本和背景的颜色。我已经在我的类 CPPToolTip
和 CPPHtmlStatic
中开发并成功测试了一个用于绘制伪 HTML 的类。因此,绘制彩色文本的解决方案很容易找到。对于这个类的其他功能,我依赖于 CodeProject 上已有的类。非常感谢所有帮助我创建这个类的人,特别是那些在 CodeProject 上发表这些类的作者。
PPMessageBox
int PPMessageBox( HWND hwnd, LPCTSTR lpszMessage, LPCTSTR lpszCaption = NULL, DWORD dwStyle = MB_OK | MB_ICONEXCLAMATION, const PPMSGBOXPARAMS * pMsgBox = NULL );
参数
hWnd
[in] 要创建的消息框的拥有者窗口的句柄。如果此参数为
NULL
,则消息框没有拥有者窗口。lpszText
[in] 指向包含要显示的消息的以 null 结尾的字符串的指针。
lpszCaption
[in] 指向包含对话框标题的以 null 结尾的字符串的指针。如果此参数为
NULL
,则使用默认标题 Error。dwStyle
[in] 指定对话框的内容和行为。此参数可以是以下标志组的组合。
要指示消息框中显示的按钮,请指定以下值之一:
值 |
描述 |
MB_ABORTRETRYIGNORE |
消息框包含三个按钮:Abort、Retry 和 Ignore。 |
MB_CANCELTRYCONTINUE |
消息框包含三个按钮:Cancel、Try Again、Continue。 |
MB_CONTINUEABORT |
消息框包含两个按钮:Continue 和 Abort。 |
MB_HELP |
向消息框添加一个 Help 按钮。当用户点击 Help 按钮或按下 F1 时,系统会向拥有者发送 WM_HELP 消息。 |
MB_IGNOREIGNOREALLCANCEL |
消息框包含三个按钮:Ignore、Ignore All、Cancel。 |
MB_NOTOALL |
向消息框添加一个“Not to All”按钮。此标志仅与 MB_YESNO 、MB_YESNOCANCEL 标志组合使用。 |
MB_OK |
消息框包含一个按钮:OK。这是默认值。 |
MB_OKCANCEL |
消息框包含两个按钮:OK 和 Cancel。 |
MB_RETRYCANCEL |
消息框包含两个按钮:Retry 和 Cancel。 |
MB_SKIPSKIPALLCANCE L |
消息框包含三个按钮:Skip、Skip All 和 Cancel。 |
MB_YESNO |
消息框包含两个按钮:Yes 和 No。 |
MB_YESNOCANCEL |
消息框包含三个按钮:Yes、No 和 Cancel。 |
MB_YESTOALL |
向消息框添加一个“Yes to All”按钮。此标志仅与 MB_YESNO 、MB_YESNOCANCEL 标志组合使用。 |
要指示消息框中显示的复选框,请指定以下值之一:
值 |
描述 |
MB_CHECKBOX |
向消息框添加一个复选框。如果未指定 MB_CHECKBOXUNDERBUTTONS 标志,则复选框将放置在消息框按钮上方。默认情况下,复选框的文本为“不再显示”。您可以通过 PPMSGBOXPARAMS 结构的 lpszCheckBoxText 成员更改此文本。 |
MB_CHECKBOXCHECKED |
复选框默认选中。此标志仅与 MB_CHECKBOX 组合使用。 |
MB_CHECKBOXUNDERBUTTONS |
复选框将放置在消息框按钮下方。此标志仅与 MB_CHECKBOX 组合使用。 |
要在消息框中显示图标,请指定以下值之一。
值 |
描述 |
MB_ICONEXCLAMATION |
消息框中出现一个感叹号图标。 |
MB_ICONWARNING |
消息框中出现一个感叹号图标。 |
MB_ICONINFORMATION |
消息框中出现一个圆圈内包含小写字母 i 的图标。 |
MB_ICONASTERISK |
消息框中出现一个圆圈内包含小写字母 i 的图标。 |
MB_ICONQUESTION |
消息框中出现一个问号图标。 |
MB_ICONSTOP |
消息框中出现一个停车标志图标。 |
MB_ICONERROR |
消息框中出现一个停车标志图标。 |
MB_ICONHAND |
消息框中出现一个停车标志图标。 |
要指示默认按钮,请指定以下值之一。
值 |
描述 |
MB_DEFBUTTON1 |
第一个按钮是默认按钮。MB_DEFBUTTON1 是默认值,除非指定了 MB_DEFBUTTON2 、MB_DEFBUTTON3 、MB_DEFBUTTON4 、MB_DEFBUTTON5 或 MB_DEFBUTTON6 。 |
MB_DEFBUTTON2 |
第二个按钮是默认按钮。 |
MB_DEFBUTTON3 |
第三个按钮是默认按钮。 |
MB_DEFBUTTON4 |
第四个按钮是默认按钮。 |
MB_DEFBUTTON5 |
第五个按钮是默认按钮。 |
MB_DEFBUTTON6 |
第六个按钮是默认按钮。 |
要指定其他选项,请使用以下一个或多个值:
值 |
描述 |
MB_NORESOURCE |
不要尝试从资源加载按钮字符串。(有关字符串资源 ID 号,请参阅 PPMessageBox.h。)如果使用此标志,按钮和复选框将使用英文字符串。如果未使用此标志,PPMessageBox() 将首先尝试从字符串资源加载按钮和复选框的字符串,如果失败,则使用英文字符串。 |
MB_NOSOUND |
显示消息框时不要播放声音。 |
MB_RIGHT |
文本右对齐。 |
MB_SETFOREGROUND |
消息框成为前台窗口。在内部,系统为消息框调用 SetForegroundWindow 函数。 |
MB_TOPMOST |
消息框以 WS_EX_TOPMOST 窗口样式创建。 |
pMsgBox
指向 PPMSGBOXPARAMS
结构的指针,该结构包含用于显示消息框的信息。
返回值
如果消息框有 Cancel 按钮,如果按下 ESC 键或选中 Cancel 按钮,函数将返回 IDCANCEL
值。如果消息框没有 Cancel 按钮,按下 ESC 无效。如果内存不足无法创建消息框,则返回值为零。如果函数成功,则返回值为以下菜单项值之一:
值 |
描述 |
IDABORT |
选中 Abort 按钮。 |
IDCANCEL |
选中 Cancel 按钮。 |
IDCLOSE |
选中 Close 按钮。 |
IDCONTINUE |
选中 Continue 按钮。 |
IDCUSTOM1 |
选中 Custom 1 按钮。 |
IDCUSTOM2 |
选中 Custom 2 按钮。 |
IDCUSTOM3 |
选中 Custom 3 按钮。 |
IDCUSTOM4 |
选中 Custom 4 按钮。 |
IDIGNORE |
选中 Ignore 按钮。 |
IDIGNOREALL |
选中 Ignore All 按钮。 |
IDNO |
选中 No 按钮。 |
IDNOTOALL |
选中 No To All 按钮。 |
IDOK |
选中 OK 按钮。 |
IDRETRY |
选中 Retry 按钮。 |
IDSKIP |
选中 Skip 按钮。 |
IDSKIPALL |
选中 Skip All 按钮。 |
IDTRYAGAIN |
选中 Try Again 按钮。 |
IDYES |
选中 Yes 按钮。 |
IDYESTOALL |
选中 Yes To All 按钮。 |
返回值可以包含以下标志的组合:
值 |
描述 |
MB_CHECKBOXCHECKED |
复选框已选中。 |
MB_TIMEOUT |
如果超时,则返回此值。 |
备注
PPMessageBox
函数创建、显示并操作消息框。消息框包含应用程序定义的消息和标题,以及预定义图标和按钮的任意组合。
当您使用系统模态消息框指示系统内存不足时,PPMSGBOXPARAMS
结构的 lpszText
和 lpszCaption
成员指向的字符串不应从资源文件中获取,因为尝试加载资源可能会失败。
如果在对话框存在时创建消息框,请使用对话框的句柄作为 hWnd
参数。hWnd
参数不应标识子窗口,例如对话框中的控件。
PPMessageBoxIndirect
<CODE>int PPMessageBoxIndirect( const PPMSGBOXPARAMS * pMsgBox = NULL );
参数
pMsgBox
指向 PPMSGBOXPARAMS
结构的指针,该结构包含用于显示消息框的信息。
返回值
如果消息框有 Cancel 按钮,如果按下 ESC 键或选中 Cancel 按钮,函数将返回 IDCANCEL
值。如果消息框没有 Cancel 按钮,按下 ESC 无效。如果内存不足无法创建消息框,则返回值为零。如果函数成功,则返回值为以下菜单项值之一:
值 |
描述 |
IDABORT |
选中 Abort 按钮。 |
IDCANCEL |
选中 Cancel 按钮。 |
IDCLOSE |
选中 Close 按钮。 |
IDCONTINUE |
选中 Continue 按钮。 |
IDCUSTOM1 |
选中 Custom 1 按钮。 |
IDCUSTOM2 |
选中 Custom 2 按钮。 |
IDCUSTOM3 |
选中 Custom 3 按钮。 |
IDCUSTOM4 |
选中 Custom 4 按钮。 |
IDIGNORE |
选中 Ignore 按钮。 |
IDIGNOREALL |
选中 Ignore All 按钮。 |
IDNO |
选中 No 按钮。 |
IDNOTOALL |
选中 No To All 按钮。 |
IDOK |
选中 OK 按钮。 |
IDRETRY |
选中 Retry 按钮。 |
IDSKIP |
选中 Skip 按钮。 |
IDSKIPALL |
选中 Skip All 按钮。 |
IDTRYAGAIN |
选中 Try Again 按钮。 |
IDYES |
选中 Yes 按钮。 |
IDYESTOALL |
选中 Yes To All 按钮。 |
返回值可以包含以下标志的组合:
值 |
描述 |
MB_CHECKBOXCHECKED |
复选框已选中。 |
MB_TIMEOUT |
如果超时,则返回此值。 |
备注
PPMessageBoxIndirect
函数创建、显示并操作消息框。消息框包含应用程序定义的消息文本和标题、任意图标以及预定义按钮的任意组合。
当您使用系统模态消息框指示系统内存不足时,PPMSGBOXPARAMS
结构的 lpszText
和 lpszCaption
成员指向的字符串不应从资源文件中获取,因为尝试加载资源可能会失败。
如果在对话框存在时创建消息框,请使用对话框的句柄作为 hWnd
参数。hWnd
参数不应标识子窗口,例如对话框中的控件。
PPMSGBOXAREA_BK 结构
PPMSGBOXAREA_BK
结构包含用于显示消息框的信息。PPMessageBox
和 PPMesssageBoxIndirect
函数使用此结构。
typedef struct PPMSGBOXAREA_BK { int nSepType; int nSepAlign; LPCTSTR lpszSepText; int nEffectBk; COLORREF crStartBk; COLORREF crMidBk; COLORREF crEndBk; } PPMSGBOXAREA_BK;
成员
nSepType
区域分隔符的类型。指定以下值之一:
值 |
描述 |
PPMSGBOX_SEP_NONE |
未指定分隔符。这是默认值。 |
PPMSGBOX_SEP_ETCHED |
分隔符是一条蚀刻的水平线。 |
PPMSGBOX_SEP_BLACK |
分隔符是一条黑色的水平线。 |
PPMSGBOX_SEP_WHITE |
分隔符是一条白色的水平线。 |
lpszSepText
指向以 null 结尾的字符串或字符串资源标识符的指针,该字符串或标识符包含分隔符文本。如果此成员为 NULL
,则不使用分隔符文本。
nSepAlign
分隔符文本的对齐方式。指定以下值之一:
值 |
描述 |
PPMSGBOX_ALIGN_LEFT |
文本显示在消息框的左侧。这是默认值。 |
PPMSGBOX_ALIGN_RIGHT |
文本显示在消息框的右侧。 |
PPMSGBOX_ALIGN_CENTER |
文本显示在消息框的中心。 |
nEffectBk
填充消息框背景的效果。指定以下值之一:
值 |
描述 |
-1 |
透明。不填充区域。默认值。 |
CPPDrawManager::EFFECT_SOLID |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_HGRADIENT |
水平渐变填充。使用 crStartBk 和 crEndBk 颜色值。 |
CPPDrawManager::EFFECT_VGRADIENT |
垂直渐变填充。使用 crStartBk 和 crEndBk 颜色值。 |
CPPDrawManager::EFFECT_HCGRADIENT |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_VCGRADIENT |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_3HGRADIENT |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_3VGRADIENT |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_NOISE |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_DIAGSHADE |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_HSHADE |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_VSHADE |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_HBUMP |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_VBUMP |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_SOFTBUMP |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_HARDBUMP |
纯色填充。使用 crStartBk 颜色值。 |
CPPDrawManager::EFFECT_METAL |
纯色填充。使用 crStartBk 颜色值。 |
PPMSGBOXPARAMS 结构
PPMSGBOXPARAMS
结构包含用于显示消息框的信息。PPMessageBox
和 PPMesssageBoxIndirect
函数使用此结构。
typedef struct PPMSGBOXPARAMS { //MessageBox area HWND hParentWnd; HINSTANCE hInstanceStrings; HINSTANCE hInstanceIcons; LPCTSTR lpszCaption; LPCTSTR lpszModuleName; LPCTSTR lpszCompanyName; int nLine; DWORD dwReportMsgID; PPMSGBOXAREA_BK pMsgBoxBk; //Header area int nHeaderHeight; LPCTSTR lpszHeaderText; PPMSGBOXAREA_BK pHeaderBk; //Message area LPCTSTR lpszText; //Control area int nControlsAlign; DWORD dwStyle; PPMSGBOXAREA_BK pControlBk; //MoreInfo area LPCTSTR lpszMoreInfo; PPMSGBOXAREA_BK pMoreInfoBk; int nTimeoutSeconds; int nDisabledSeconds; BOOL bDisableAllCtrls; DWORD dwContextHelpID; DWORD dwUserIconID; LPCTSTR lpszCustomButtons; LPCTSTR lpszCheckBoxText; mapLocalBtnText * pLocalBtnText; } PPMSGBOXPARAMS;
成员
hParentWnd
所有者窗口的句柄。此成员可以为
NULL
。hInstanceString
包含由
lpszText
、lpszCaption
和其他字符串成员标识的字符串资源的模块的句柄。hInstanceIcons
包含由
lpszIcon
成员标识的图标资源的模块的句柄。lpszCaption
指向以 null 结尾的字符串的指针,该字符串包含消息框标题。如果此成员为
NULL
,则使用默认标题 Error。lpszModuleName
指定应用程序的源模块名称。这可以是实际的源模块名称(例如,由
__FILE__
宏返回的名称)或对上下文有意义的名称(例如,“ConfirmFileDelete”)。这在将“不再询问/告知”复选框状态保存到注册表或 ini 文件时使用。由应用程序管理此注册表项。如果需要在每次应用程序启动时清除此项,应用程序必须包含执行此操作的代码。
XMessageBox
的所有键/值对都存储在注册表的 HKEY_CURRENT_USER\Software\CompanyName\AppName\PPMessageBox 下。如果使用 ini 文件,则复选框状态将保存到应用程序目录中的 PPMessageBox.ini 文件中。当显示消息框时,如果在
XMSGBOXPARAMS
struct
中指定了lpszModule
,则只有当注册表项不存在时才会显示消息框。如果显示消息框,并且用户选中“不再询问/告知”复选框,则复选框状态将保存到注册表中。lpszCompanyName
指定应用程序的公司名称。这在将“不再询问/告知”复选框状态保存到注册表或 ini 文件时使用。
nLine
指定应用程序的源模块行号。这在将“不再询问/告知”复选框状态保存到注册表时使用。请注意,无论
lpszModule
字符串是否编码,行号都不会编码。dwReportMsgID
指定点击“报告”按钮时要发送的消息。
pMsgBoxBk
PPMSGBOXAREA_BK
结构,包含用于显示所有消息框背景的信息。nHeaderHeight
消息框标题的最小高度。
lpszHeaderText
指向以 null 结尾的字符串或传递给
MAKEINTRESOURCE
宏的字符串资源标识符的指针,该字符串或标识符包含要显示的标题。此字符串可能具有类似 HTML 的格式。pHeaderBk
PPMSGBOXAREA_BK
结构,包含用于显示消息框标题区域背景的信息。lpszText
指向以 null 结尾的字符串或传递给
MAKEINTRESOURCE
宏的字符串资源标识符的指针,该字符串或标识符包含要显示的消息。此字符串可能具有类似 HTML 的格式。nControlsAlign
一个值,指定消息框中按钮的水平对齐方式。此成员可以是以下值之一:
PPMSGBOX_ALIGN_LEFT
、PPMSGBOX_ALIGN_RIGHT
或PPMSGBOX_ALIGN_CENTER
。dwStyle
指定对话框的内容和行为。此成员可以是
PPMessageBox
函数的dwStyle
参数所描述的标志组合。此外,如果您希望消息框显示
lpszIcon
成员指定的图标,可以指定MB_USERICON
标志。pControlBk
PPMSGBOXAREA_BK
结构,包含用于显示消息框控件区域背景的信息。lpszMoreInfo
指向以 null 结尾的字符串或传递给
MAKEINTRESOURCE
宏的字符串资源标识符的指针,该字符串或标识符包含要显示的其他信息。此字符串可能具有类似 HTML 的格式。pMoreInfoBk
PPMSGBOXAREA_BK
结构,包含用于显示消息框MoreInfo
区域背景的信息。nTimeoutSeconds
指定在自动点击默认按钮之前的超时值(以秒为单位)。
nDisabledSeconds
指定禁用默认按钮或禁用消息框所有按钮(不包括“帮助”、“报告”和“更多信息”按钮)的超时值(以秒为单位)。
bDisableAllCtrls
标志,指示是禁用默认按钮 (
FALSE
) 还是禁用消息框的所有按钮 (TRUE
)。“帮助”、“报告”和“更多信息”按钮永远不会被禁用。dwContextHelpID
标识帮助上下文。如果发生帮助事件,此值将在消息框发送给所有者窗口或回调函数的
HELPINFO
结构中指定。lpszIcon
标识图标资源。此参数可以是以 null 结尾的字符串或传递给
MAKEINTRESOURCE
宏的整数资源标识符。要加载标准系统定义图标之一,请将
hInstance
成员设置为NULL
,并将zIcon
设置为LoadIcon
函数列出的值之一。如果
dwStyle
成员未指定MBUSERICON
标志,则忽略此成员。lpszCustomButtons
指向以 null 结尾的字符串或传递给
MAKEINTRESOURCE
宏的字符串资源标识符的指针,该字符串或标识符包含自定义按钮标题列表。此字符串的格式为“Custom 1\nCustom 2\nCustom 3\nCustom 4”。如果未使用自定义按钮,则为NULL
。最多可以指定四个按钮。当点击自定义按钮时,它将返回
IDCUSTOM1
、IDCUSTOM2
等值。指定自定义按钮时,将不会显示其他按钮(“帮助”、“报告”和“更多信息”按钮除外。这些按钮可能无论如何都会显示)。lpszCheckBoxText
指向以 null 结尾的字符串或传递给
MAKEINTRESOURCE
宏的字符串资源标识符的指针,该字符串或标识符包含复选框标题。您可以为每个消息框更改复选框标题。如果此参数为NULL
,则复选框标题将从pLocalBtnText
成员指定的映射或资源中检索。如果该参数也为NULL
,则复选框标题将默认为“不再显示”。pLocalBtnText
指向包含指向以 null 结尾的字符串的映射的指针,或传递给
MAKEINTRESOURCE
宏的字符串资源标识符的指针,该字符串或标识符包含按钮标题。映射的键是按钮 ID(例如:IDOK
、IDCANCEL
、IDYES
、MB_CHECKBOX
等)。
CPPMessageBox 类
CPPMessageBox
类是 API PPMessageBox
和 PPMessageBoxIndirect
方法的 MFC 包装器。此类的目的是方便地处理消息框定制的庞大而复杂的 PPMSGBOXPARAMS
结构。为此,它包含一组方法:
MessageBox |
显示消息框。 |
MessageBoxIndirect |
显示消息框。 |
GetMessageBoxParams |
接收用于显示消息框的信息。 |
SetMessageBoxParams |
设置用于显示消息框的信息。 |
SetTimeouts |
设置超时值以自动点击或禁用消息框按钮。 |
SetCustomButtons |
指定用于自定义按钮标题的字符串。 |
SetBackground |
设置填充消息框区域背景的效果。 |
SetSeparator |
设置消息框区域的分隔符。 |
ClearAllButtonsText |
清除所有按钮文本。 |
SetButtonText |
设置指定按钮的文本。 |
GetButtonText |
接收指定按钮的文本。 |
CPPMessageBox::MessageBox
int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nStyle = MB_OK | MB_ICONEXCLAMATION, const PPMSGBOXPARAMS * pMsgBox = NULL);
参数
lpszText
- 指向以 null 结尾的字符串的指针,该字符串包含要显示的消息。lpszCaption
- 指向以 null 结尾的字符串的指针,该字符串包含对话框标题。如果此参数为NULL
,则使用默认标题 Error。nStyle
- 指定对话框的内容和行为。有关更多信息,请参阅PPMessageBox
方法。pMsgBox
- 指向PPMSGBOXPARAMS
结构的指针,该结构包含用于显示消息框的信息。
返回值
如果消息框有 Cancel 按钮,如果按下 ESC 键或选中 Cancel 按钮,函数将返回 IDCANCEL
值。如果消息框没有 Cancel 按钮,按下 ESC 无效。
如果函数成功,有关返回值的更多信息,请参阅 PPMessageBox
方法。
如果内存不足无法创建消息框,则返回值为零。
备注
MessageBox
函数创建、显示并操作消息框。消息框包含应用程序定义的消息和标题,以及预定义图标和按钮的任意组合。有关更多信息,请参阅 PPMessageBox
方法。
CPPMessageBox::MessageBoxIndirect
int MessageBoxIndirect(const PPMSGBOXPARAMS * pMsgBox = NULL);
参数
pMsgBox
- 指向PPMSGBOXPARAMS
结构的指针,该结构包含用于显示消息框的信息。
返回值
如果消息框有 Cancel 按钮,如果按下 ESC 键或选中 Cancel 按钮,函数将返回 IDCANCEL
值。如果消息框没有 Cancel 按钮,按下 ESC 无效。如果函数成功,有关返回值的更多信息,请参阅 PPMessageBox
方法。如果内存不足无法创建消息框,则返回值为零。
备注
MessageBox
函数创建、显示并操作消息框。消息框包含应用程序定义的消息和标题,以及预定义图标和按钮的任意组合。有关更多信息,请参阅 PPMessageBoxIndirect
方法。
CPPMessageBox::GetMessageBoxParams
PPMSGBOXPARAMS * GetMessageBoxParams();
返回值
pMsgBoxParams
- 指向PPMSGBOXPARAMS
结构的指针,该结构接收用于显示消息框的信息。
备注
此方法接收用于显示消息框的信息。
CPPMessageBox::SetMessageBoxParams
void SetMessageBoxParams(const PPMSGBOXPARAMS * pMsgBoxParams);
参数
pMsgBoxParams
- 指向PPMSGBOXPARAMS
结构的指针,该结构包含用于显示消息框的信息。
备注
设置用于显示消息框的信息。
CPPMessageBox::SetTimeouts
void SetTimeouts(int nAutoclick, int nDisable = 0, BOOL bGlobalDisable = FALSE);
参数
nAutoclick
- 指定自动点击默认按钮的超时值,以秒为单位。如果此参数是非零值,则默认按钮将在超时后被点击(忽略nDisable
和bGlobalDisable
参数)。nDisable
- 指定禁用默认按钮或禁用消息框所有按钮的超时值,以秒为单位。此参数仅在nAutoclick
参数为零时有效。bGlobalDisable
-TRUE
表示禁用消息框的所有按钮;否则只禁用默认按钮。
备注
设置超时值以自动点击或禁用消息框按钮。有关更多信息,请参阅下表:
参数 |
操作 | ||
nAutoclick |
nDisable |
bGlobalDisable | |
0 | 0 | FALSE |
无任何超时 |
自动点击默认按钮的超时值 | x | x | 自动点击默认按钮 |
0 | 禁用默认按钮的超时值 | FALSE |
禁用默认按钮 |
0 | 禁用所有按钮的超时值 | TRUE |
禁用所有按钮 |
CPPMessageBox::SetCustomButtons
void SetCustomButtons(LPCTSTR lpszButtonNames = NULL);
参数
lpszButtonNames
- 指向以 null 结尾的字符串或传递给MAKEINTRESOURCE
宏的字符串资源标识符的指针,该字符串或标识符包含自定义按钮标题列表。
备注
指定用于自定义按钮标题的字符串。此字符串的格式为“Custom 1\nCustom 2\nCustom 3\nCustom 4”。如果未使用自定义按钮,则为 NULL
。最多可以指定四个按钮。当点击自定义按钮时,它将返回 IDCUSTOM1
、IDCUSTOM2
等值。指定自定义按钮时,将不会显示其他按钮(“帮助”、“报告”和“更多信息”按钮除外。这些按钮始终可以显示)。
CPPMessageBox::SetBackground
void SetBackground(DWORD dwArea, PPMSGBOXAREA_BK * pAreaBk); void SetBackground(DWORD dwArea, int nEffectBk = -1, COLORREF crStartBk = -1, COLORREF crEndBk = -1, COLORREF crMidBk = -1);
参数
dwArea
- 填充背景的消息框区域。指定以下值之一:PPMSGBOX_HEADER_AREA
、PPMSGBOX_MESSAGE_AREA
、PPMSGBOX_CONTROL_AREA
、PPMSGBOX_MOREINFO_AREA
。pAreaBk
- 指向PPMSGBOXAREA_BK
结构的指针,该结构包含用于填充消息框区域的信息。如果区域未填充,则为NULL
。nEffectBk
- 填充消息框区域背景的效果。如果区域未填充,则为 -1。crStartBk
、crEndBk
、crMidBk
- 填充背景的COLORREF
值。-1 为COLOR_3DFACE
。
备注
此方法设置填充消息框区域背景的效果。
CPPMessageBox::SetSeparator
void SetSeparator(DWORD dwArea, int nSepType = PPMSGBOX_SEP_NONE, int nSepAlign = PPMSGBOX_ALIGN_LEFT, LPCTSTR lpszSepText = NULL);
参数
dwArea
- 消息框中填充背景的区域,指定以下值之一:PPMSGBOX_HEADER_AREA
、PPMSGBOX_CONTROL_AREA
、PPMSGBOX_MOREINFO_AREA
。nSepType
- 分隔符的类型,指定以下值之一:PPMSGBOX_SEP_NONE
、PPMSGBOX_SEP_ETCHED
、PPMSGBOX_SEP_BLACK
、PPMSGBOX_SEP_WHITE
。nSepAlign
- 分隔符文本的对齐方式,指定以下值之一:PPMSGBOX_ALIGN_LEFT
、PPMSGBOX_ALIGN_RIGHT
、PPMSGBOX_ALIGN_CENTER
。lpszSepText
- 指向以 null 结尾的字符串或字符串资源标识符的指针,该字符串或标识符包含分隔符文本。如果此成员为NULL
,则不使用分隔符文本。
备注
此方法绘制消息框区域的分隔符。有关更多信息,请参阅 PPMSGBOXAREA_BK
结构。
CPPMessageBox::ClearAllButtonsText
void ClearAllButtonsText();
备注
此方法清除所有按钮文本。
CPPMessageBox::SetButtonText
void SetButtonText(DWORD dwBtnID, LPCTSTR lpszText = NULL);
参数
dwBtnID
- 按钮标识符。指定以下值之一:值描述IDABORT
中止按钮。 IDCANCEL
取消按钮。 IDCLOSE
关闭按钮。 IDCONTINUE
继续按钮。 IDIGNORE
忽略按钮。 IDIGNOREALL
全部忽略按钮。 IDNO
否按钮。 IDNOTOALL
全部否按钮。 IDOK
确定按钮。 IDRETRY
重试按钮。 IDSKIP
跳过按钮。 IDSKIPALL
全部跳过按钮。 IDTRYAGAIN
再试一次按钮。 IDYES
是按钮。 IDYESTOALL
全部是按钮。 MB_CHECKBOX
复选框按钮。 lpszText
- 指向以 null 结尾的字符串或字符串资源标识符的指针,该字符串或标识符包含指定按钮的文本。如果此成员为NULL
,则使用默认文本。
备注
此方法设置指定按钮的文本。如果按钮没有文本,则将从资源加载文本或使用默认文本。
CPPMessageBox::GetButtonText
LPCTSTR GetButtonText(DWORD dwBtnID);
参数
dwBtnID
- 按钮标识符。有关可用值的列表,请参阅SetButtonText
方法。
返回值
指向以 null 结尾的字符串的指针,该字符串包含指定按钮的文本。如果指定按钮的文本不可用,则为 NULL
。
备注
此方法接收指定按钮的文本。
如何使用?
要将 PPMessageBox
集成到您的应用程序中,您应该将以下文件添加到您的项目:
- PPMessageBox.h
- PPMessageBox.cpp
- PPHtmlDrawer.h
- PPHtmlDrawer.cpp
- PPDrawManager.h
- PPDrawManager.cpp
- CeXDib.h, CeXDib.cpp - 感谢 Davide Pizzolato 和 Davide Calabro。此类别用于扩展背景效果。
- PPMessageBoxClass.h, PPMessageBoxClass.cpp - 一个包装类,用于 MFC 或 WTL 应用程序中的
PPMessageBox
和PPMessageBoxIndirect
API 方法。
使用 API 方法
在您想要调用 PPMessageBox()
方法的头文件中包含头文件 PPMessageBox.h。
用作 MFC 类或 WTL 类
在您想要使用 CPPMessageBox()
类的头文件中包含头文件 PPMessageBoxClass.h 并创建一个成员变量。
CPPMessageBox m_pMsgBox;
您可以使用 OnCreate()
、OnInitDialog()
和任何其他方法进行自定义或显示消息框。
历史
- 2005年2月14日
首次发布
版权和免责声明
本软件及随附文件“按原样”分发,不提供任何明示或暗示的保证。对于可能造成的损害甚至功能性不承担任何责任。用户必须承担使用本软件的全部风险。
本软件可免费用于个人使用或免费软件应用程序。如果您想感谢我的工作,您可以向我捐赠任何金额的资金,以支持本类的开发。如果您在商业或共享软件应用程序中使用本软件,我们恳请您向作者捐赠任何金额的资金。
联系作者
鼓励您在任何地方使用此类别;CPPMessageBox
不需要任何费用。随意添加修改和/或修复错误,但请将其中任何内容发送给我!