65.9K
CodeProject 正在变化。 阅读更多。
Home

CPPMessageBox v1.0

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (49投票s)

2005年2月14日

CPOL

22分钟阅读

viewsIcon

188105

downloadIcon

5221

扩展的 MessageBox 类

Sample Image - CPPMessageBox.gif

目录

引言

另一个 MessageBox:CodeProject 网站提供了更多作为标准 MessageBox 扩展的解决方案。那么为什么还要再来一个呢?你可能会问。除非我自己的项目真正需要,否则我不会开发类。长期以来,我一直使用 Hans Dietrich"XMessageBox - 一个逆向工程的 MessageBox()" 类。这是一个不错的类,我感谢他的工作。然而,所有事物都有终结。这个类已经不能满足我了。我希望有一个类可以让我控制消息文本和背景的颜色。我已经在我的类 CPPToolTipCPPHtmlStatic 中开发并成功测试了一个用于绘制伪 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 消息框包含三个按钮:AbortRetryIgnore
MB_CANCELTRYCONTINUE 消息框包含三个按钮:CancelTry AgainContinue
MB_CONTINUEABORT 消息框包含两个按钮:ContinueAbort
MB_HELP 向消息框添加一个 Help 按钮。当用户点击 Help 按钮或按下 F1 时,系统会向拥有者发送 WM_HELP 消息。
MB_IGNOREIGNOREALLCANCEL 消息框包含三个按钮:IgnoreIgnore AllCancel
MB_NOTOALL 向消息框添加一个“Not to All”按钮。此标志仅与 MB_YESNOMB_YESNOCANCEL 标志组合使用。
MB_OK 消息框包含一个按钮:OK。这是默认值。
MB_OKCANCEL 消息框包含两个按钮:OKCancel
MB_RETRYCANCEL 消息框包含两个按钮:RetryCancel
MB_SKIPSKIPALLCANCEL 消息框包含三个按钮:SkipSkip AllCancel
MB_YESNO 消息框包含两个按钮:YesNo
MB_YESNOCANCEL 消息框包含三个按钮:YesNoCancel
MB_YESTOALL 向消息框添加一个“Yes to All”按钮。此标志仅与 MB_YESNOMB_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_DEFBUTTON2MB_DEFBUTTON3MB_DEFBUTTON4MB_DEFBUTTON5MB_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 结构的 lpszTextlpszCaption 成员指向的字符串不应从资源文件中获取,因为尝试加载资源可能会失败。

如果在对话框存在时创建消息框,请使用对话框的句柄作为 hWnd 参数。hWnd 参数不应标识子窗口,例如对话框中的控件。

CPPMessageBox 概述 | 类成员

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 结构的 lpszTextlpszCaption 成员指向的字符串不应从资源文件中获取,因为尝试加载资源可能会失败。

如果在对话框存在时创建消息框,请使用对话框的句柄作为 hWnd 参数。hWnd 参数不应标识子窗口,例如对话框中的控件。

PPMSGBOXAREA_BK 结构

PPMSGBOXAREA_BK 结构包含用于显示消息框的信息。PPMessageBoxPPMesssageBoxIndirect 函数使用此结构。

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 水平渐变填充。使用 crStartBkcrEndBk 颜色值。
CPPDrawManager::EFFECT_VGRADIENT 垂直渐变填充。使用 crStartBkcrEndBk 颜色值。
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 结构包含用于显示消息框的信息。PPMessageBoxPPMesssageBoxIndirect 函数使用此结构。

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

    包含由 lpszTextlpszCaption 和其他字符串成员标识的字符串资源的模块的句柄。

  • 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_LEFTPPMSGBOX_ALIGN_RIGHTPPMSGBOX_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

    最多可以指定四个按钮。当点击自定义按钮时,它将返回 IDCUSTOM1IDCUSTOM2 等值。指定自定义按钮时,将不会显示其他按钮(“帮助”、“报告”和“更多信息”按钮除外。这些按钮可能无论如何都会显示)。

  • lpszCheckBoxText

    指向以 null 结尾的字符串或传递给 MAKEINTRESOURCE 宏的字符串资源标识符的指针,该字符串或标识符包含复选框标题。您可以为每个消息框更改复选框标题。如果此参数为 NULL,则复选框标题将从 pLocalBtnText 成员指定的映射或资源中检索。如果该参数也为 NULL,则复选框标题将默认为“不再显示”。

  • pLocalBtnText

    指向包含指向以 null 结尾的字符串的映射的指针,或传递给 MAKEINTRESOURCE 宏的字符串资源标识符的指针,该字符串或标识符包含按钮标题。映射的键是按钮 ID(例如:IDOKIDCANCELIDYESMB_CHECKBOX 等)。

CPPMessageBox 类

CPPMessageBox 类是 API PPMessageBoxPPMessageBoxIndirect 方法的 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 概述

CPPMessageBox::MessageBoxIndirect

int MessageBoxIndirect(const PPMSGBOXPARAMS * pMsgBox = NULL);

参数

  • pMsgBox - 指向 PPMSGBOXPARAMS 结构的指针,该结构包含用于显示消息框的信息。

返回值

如果消息框有 Cancel 按钮,如果按下 ESC 键或选中 Cancel 按钮,函数将返回 IDCANCEL 值。如果消息框没有 Cancel 按钮,按下 ESC 无效。如果函数成功,有关返回值的更多信息,请参阅 PPMessageBox 方法。如果内存不足无法创建消息框,则返回值为零。

备注

MessageBox 函数创建、显示并操作消息框。消息框包含应用程序定义的消息和标题,以及预定义图标和按钮的任意组合。有关更多信息,请参阅 PPMessageBoxIndirect 方法。

CPPMessageBox 概述

CPPMessageBox::GetMessageBoxParams

PPMSGBOXPARAMS * GetMessageBoxParams();

返回值

  • pMsgBoxParams - 指向 PPMSGBOXPARAMS 结构的指针,该结构接收用于显示消息框的信息。

备注

此方法接收用于显示消息框的信息。

CPPMessageBox 概述

CPPMessageBox::SetMessageBoxParams

void SetMessageBoxParams(const PPMSGBOXPARAMS * pMsgBoxParams);

参数

  • pMsgBoxParams - 指向 PPMSGBOXPARAMS 结构的指针,该结构包含用于显示消息框的信息。

备注

设置用于显示消息框的信息。

CPPMessageBox 概述

CPPMessageBox::SetTimeouts

void SetTimeouts(int nAutoclick, int nDisable = 0, BOOL bGlobalDisable = FALSE);

参数

  • nAutoclick - 指定自动点击默认按钮的超时值,以秒为单位。如果此参数是非零值,则默认按钮将在超时后被点击(忽略 nDisablebGlobalDisable 参数)。
  • nDisable - 指定禁用默认按钮或禁用消息框所有按钮的超时值,以秒为单位。此参数仅在 nAutoclick 参数为零时有效。
  • bGlobalDisable - TRUE 表示禁用消息框的所有按钮;否则只禁用默认按钮。

备注

设置超时值以自动点击或禁用消息框按钮。有关更多信息,请参阅下表:

参数
操作
nAutoclick
nDisable
bGlobalDisable
0 0 FALSE 无任何超时
自动点击默认按钮的超时值 x x 自动点击默认按钮
0 禁用默认按钮的超时值 FALSE 禁用默认按钮
0 禁用所有按钮的超时值 TRUE 禁用所有按钮

CPPMessageBox 概述

CPPMessageBox::SetCustomButtons

void SetCustomButtons(LPCTSTR lpszButtonNames = NULL);

参数

  • lpszButtonNames - 指向以 null 结尾的字符串或传递给 MAKEINTRESOURCE 宏的字符串资源标识符的指针,该字符串或标识符包含自定义按钮标题列表。

备注

指定用于自定义按钮标题的字符串。此字符串的格式为“Custom 1\nCustom 2\nCustom 3\nCustom 4”。如果未使用自定义按钮,则为 NULL。最多可以指定四个按钮。当点击自定义按钮时,它将返回 IDCUSTOM1IDCUSTOM2 等值。指定自定义按钮时,将不会显示其他按钮(“帮助”、“报告”和“更多信息”按钮除外。这些按钮始终可以显示)。

CPPMessageBox 概述

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_AREAPPMSGBOX_MESSAGE_AREAPPMSGBOX_CONTROL_AREAPPMSGBOX_MOREINFO_AREA
  • pAreaBk - 指向 PPMSGBOXAREA_BK 结构的指针,该结构包含用于填充消息框区域的信息。如果区域未填充,则为 NULL
  • nEffectBk - 填充消息框区域背景的效果。如果区域未填充,则为 -1。
  • crStartBkcrEndBkcrMidBk - 填充背景的 COLORREF 值。-1 为 COLOR_3DFACE

备注

此方法设置填充消息框区域背景的效果。

CPPMessageBox 概述

CPPMessageBox::SetSeparator

void SetSeparator(DWORD dwArea, int nSepType = PPMSGBOX_SEP_NONE, 
     int nSepAlign = PPMSGBOX_ALIGN_LEFT, LPCTSTR lpszSepText = NULL);

参数

  • dwArea - 消息框中填充背景的区域,指定以下值之一:PPMSGBOX_HEADER_AREAPPMSGBOX_CONTROL_AREAPPMSGBOX_MOREINFO_AREA
  • nSepType - 分隔符的类型,指定以下值之一:PPMSGBOX_SEP_NONEPPMSGBOX_SEP_ETCHEDPPMSGBOX_SEP_BLACKPPMSGBOX_SEP_WHITE
  • nSepAlign - 分隔符文本的对齐方式,指定以下值之一:PPMSGBOX_ALIGN_LEFTPPMSGBOX_ALIGN_RIGHTPPMSGBOX_ALIGN_CENTER
  • lpszSepText - 指向以 null 结尾的字符串或字符串资源标识符的指针,该字符串或标识符包含分隔符文本。如果此成员为 NULL,则不使用分隔符文本。

备注

此方法绘制消息框区域的分隔符。有关更多信息,请参阅 PPMSGBOXAREA_BK 结构。

CPPMessageBox 概述

CPPMessageBox::ClearAllButtonsText

void ClearAllButtonsText(); 

备注

此方法清除所有按钮文本。

CPPMessageBox 概述

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 概述

CPPMessageBox::GetButtonText

LPCTSTR GetButtonText(DWORD dwBtnID);

参数

  • dwBtnID - 按钮标识符。有关可用值的列表,请参阅 SetButtonText 方法。

返回值

指向以 null 结尾的字符串的指针,该字符串包含指定按钮的文本。如果指定按钮的文本不可用,则为 NULL

备注

此方法接收指定按钮的文本。

CPPMessageBox 概述

如何使用?

要将 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 应用程序中的 PPMessageBoxPPMessageBoxIndirect API 方法。

使用 API 方法

在您想要调用 PPMessageBox() 方法的头文件中包含头文件 PPMessageBox.h

用作 MFC 类或 WTL 类

在您想要使用 CPPMessageBox() 类的头文件中包含头文件 PPMessageBoxClass.h 并创建一个成员变量。

CPPMessageBox m_pMsgBox;

您可以使用 OnCreate()OnInitDialog() 和任何其他方法进行自定义或显示消息框。

历史

  • 2005年2月14日

    首次发布

版权和免责声明

本软件及随附文件“按原样”分发,不提供任何明示或暗示的保证。对于可能造成的损害甚至功能性不承担任何责任。用户必须承担使用本软件的全部风险。

本软件可免费用于个人使用或免费软件应用程序。如果您想感谢我的工作,您可以向我捐赠任何金额的资金,以支持本类的开发。如果您在商业或共享软件应用程序中使用本软件,我们恳请您向作者捐赠任何金额的资金。

联系作者

鼓励您在任何地方使用此类别;CPPMessageBox 不需要任何费用。随意添加修改和/或修复错误,但请将其中任何内容发送给

© . All rights reserved.