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_SKIPSKIPALLCANCEL |
消息框包含三个按钮: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 文件中。当显示消息框时,如果在
XMSGBOXPARAMSstruct中指定了lpszModule,则只有当注册表项不存在时才会显示消息框。如果显示消息框,并且用户选中“不再询问/告知”复选框,则复选框状态将保存到注册表中。lpszCompanyName指定应用程序的公司名称。这在将“不再询问/告知”复选框状态保存到注册表或 ini 文件时使用。
nLine指定应用程序的源模块行号。这在将“不再询问/告知”复选框状态保存到注册表时使用。请注意,无论
lpszModule字符串是否编码,行号都不会编码。dwReportMsgID指定点击“报告”按钮时要发送的消息。
pMsgBoxBkPPMSGBOXAREA_BK结构,包含用于显示所有消息框背景的信息。nHeaderHeight消息框标题的最小高度。
lpszHeaderText指向以 null 结尾的字符串或传递给
MAKEINTRESOURCE宏的字符串资源标识符的指针,该字符串或标识符包含要显示的标题。此字符串可能具有类似 HTML 的格式。pHeaderBkPPMSGBOXAREA_BK结构,包含用于显示消息框标题区域背景的信息。lpszText指向以 null 结尾的字符串或传递给
MAKEINTRESOURCE宏的字符串资源标识符的指针,该字符串或标识符包含要显示的消息。此字符串可能具有类似 HTML 的格式。nControlsAlign一个值,指定消息框中按钮的水平对齐方式。此成员可以是以下值之一:
PPMSGBOX_ALIGN_LEFT、PPMSGBOX_ALIGN_RIGHT或PPMSGBOX_ALIGN_CENTER。dwStyle指定对话框的内容和行为。此成员可以是
PPMessageBox函数的dwStyle参数所描述的标志组合。此外,如果您希望消息框显示
lpszIcon成员指定的图标,可以指定MB_USERICON标志。pControlBkPPMSGBOXAREA_BK结构,包含用于显示消息框控件区域背景的信息。lpszMoreInfo指向以 null 结尾的字符串或传递给
MAKEINTRESOURCE宏的字符串资源标识符的指针,该字符串或标识符包含要显示的其他信息。此字符串可能具有类似 HTML 的格式。pMoreInfoBkPPMSGBOXAREA_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和PPMessageBoxIndirectAPI 方法。
使用 API 方法
在您想要调用 PPMessageBox() 方法的头文件中包含头文件 PPMessageBox.h。
用作 MFC 类或 WTL 类
在您想要使用 CPPMessageBox() 类的头文件中包含头文件 PPMessageBoxClass.h 并创建一个成员变量。
CPPMessageBox m_pMsgBox;
您可以使用 OnCreate()、OnInitDialog() 和任何其他方法进行自定义或显示消息框。
历史
- 2005年2月14日
首次发布
版权和免责声明
本软件及随附文件“按原样”分发,不提供任何明示或暗示的保证。对于可能造成的损害甚至功能性不承担任何责任。用户必须承担使用本软件的全部风险。
本软件可免费用于个人使用或免费软件应用程序。如果您想感谢我的工作,您可以向我捐赠任何金额的资金,以支持本类的开发。如果您在商业或共享软件应用程序中使用本软件,我们恳请您向作者捐赠任何金额的资金。
联系作者
鼓励您在任何地方使用此类别;CPPMessageBox 不需要任何费用。随意添加修改和/或修复错误,但请将其中任何内容发送给我!
