CMFCDesktopAlertWnd Class

CMFCDesktopAlertWnd 类实现显示在屏幕上以向用户通知事件的无模式对话框的功能。

有关详细信息,请参阅所安装的 Visual Studio 的 C\atlmfc\src\mfc 文件夹中的源代码。

语法

class CMFCDesktopAlertWnd : public CWnd

成员

公共方法

名称 描述
CMFCDesktopAlertWnd::Create 创建并初始化桌面通知窗口。
CMFCDesktopAlertWnd::GetAnimationSpeed 返回动画速度。
CMFCDesktopAlertWnd::GetAnimationType 返回动画类型。
CMFCDesktopAlertWnd::GetAutoCloseTime 返回自动关闭超时。
CMFCDesktopAlertWnd::GetCaptionHeight 返回标题栏的高度。
CMFCDesktopAlertWnd::GetDialogSize
CMFCDesktopAlertWnd::GetLastPos 返回屏幕上桌面通知窗口的最后一个有效位置。
CMFCDesktopAlertWnd::GetTransparency 返回透明度级别。
CMFCDesktopAlertWnd::HasSmallCaption 确定桌面通知窗口是否随小标题栏一起显示。
CMFCDesktopAlertWnd::OnBeforeShow
CMFCDesktopAlertWnd::OnClickLinkButton 当用户单击桌面通知菜单上的链接按钮时由框架调用。
CMFCDesktopAlertWnd::OnCommand 当用户从菜单中选择项、子控件发送通知消息或转换加速键击时,框架将调用此成员函数。 (替代 CWnd::OnCommand。)
CMFCDesktopAlertWnd::OnDraw
CMFCDesktopAlertWnd::ProcessCommand
CMFCDesktopAlertWnd::SetAnimationSpeed 设置新的动画速度。
CMFCDesktopAlertWnd::SetAnimationType 设置动画类型。
CMFCDesktopAlertWnd::SetAutoCloseTime 设置自动关闭超时。
CMFCDesktopAlertWnd::SetSmallCaption 在小标题栏和普通标题栏之间切换。
CMFCDesktopAlertWnd::SetTransparency 设置透明度级别。

注解

桌面通知窗口可以是透明的,可以显示动画效果,也可以消失(在指定的延迟后,或者当用户通过单击关闭按钮将其关闭时)。

桌面通知窗口还可以包含默认对话框,该对话框又包含图标、消息文本(标签)和链接。 或者,桌面通知窗口可以包含来自应用程序资源的自定义对话框。

可以分两步创建桌面通知窗口。 首先,调用构造函数来构造 CMFCDesktopAlertWnd 对象。 其次,调用 CMFCDesktopAlertWnd::Create 成员函数,创建窗口并将其附加到 CMFCDesktopAlertWnd 对象。

CMFCDesktopAlertWnd 对象将创建一个特殊子对话框,用于填充桌面通知窗口的工作区。 对话框拥有位于其上的所有控件。

若要在弹出窗口上显示自定义对话框,请执行以下步骤:

  1. CMFCDesktopAlertDialog 派生一个类。

  2. 在资源中创建子对话框模板。

  3. 使用对话框模板的资源 ID 和指向派生类的运行时类信息的指针调用 CMFCDesktopAlertWnd::Create

  4. 对自定义对话框进行编程以处理来自托管控件的所有通知,或对托管控件进行编程以直接处理这些通知。

使用以下函数控制桌面通知窗口的行为:

示例

下面的示例说明如何使用 CMFCDesktopAlertWnd 类中的各种方法来配置 CMFCDesktopAlertWnd 对象。 该示例演示如何设置动画类型、设置弹出窗口的透明度、指定通知窗口显示小标题栏以及设置通知窗口自动关闭前经过的时间。 该示例还演示如何创建和初始化桌面通知窗口。 此代码片段是桌面通知演示示例的一部分。

CMFCDesktopAlertWnd *pPopup = new CMFCDesktopAlertWnd;

// int m_nAnimation
pPopup->SetAnimationType((CMFCPopupMenu::ANIMATION_TYPE)m_nAnimation);

// int m_nAnimationSpeed
pPopup->SetAnimationSpeed(m_nAnimationSpeed);

// int m_nTransparency
pPopup->SetTransparency((BYTE)m_nTransparency);

// BOOL m_bSmallCaption
pPopup->SetSmallCaption(m_bSmallCaption);

// BOOL m_bAutoClose, int m_nAutoCloseTime
pPopup->SetAutoCloseTime(m_bAutoClose ? m_nAutoCloseTime * 1000 : 0);

// int m_nPopupSource
if (m_nPopupSource == 0)
{
   // int m_nVisualMngr
   // CPoint m_ptPopup
   // The this pointer points to a CDesktopAlertDemoDlg class which extends the CDialogEx class.
   if (m_nVisualMngr == 5) // MSN-style
   {
      pPopup->Create(this, IDD_DIALOG2, NULL,
                     m_ptPopup, RUNTIME_CLASS(CMSNDlg));
   }
   else
   {
      pPopup->Create(this, IDD_DIALOG1,
                     m_menuPopup.GetSubMenu(0)->GetSafeHmenu(),
                     m_ptPopup, RUNTIME_CLASS(CMyPopupDlg));
   }
}

继承层次结构

CObject

CCmdTarget

CWnd

CMFCDesktopAlertWnd

要求

标头:afxDesktopAlertWnd.h

CMFCDesktopAlertWnd::Create

创建并初始化桌面通知窗口。

virtual BOOL Create(
    CWnd* pWndOwner,
    UINT uiDlgResID,
    HMENU hMenu = NULL,
    CPoint ptPos = CPoint(-1,-1),
    CRuntimeClass* pRTIDlgBar = RUNTIME_CLASS(CMFCDesktopAlertDialog));

virtual BOOL Create(
    CWnd* pWndOwner,
    CMFCDesktopAlertWndInfo& params,
    HMENU hMenu = NULL,
    CPoint ptPos = CPoint(-1,-1));

参数

pWndOwner
[in, out] 指定通知窗口的所有者。 然后,该所有者将接受桌面通知窗口的所有通知。 此值不能为 NULL。

uiDlgResID
[in] 指定通知窗口的资源 ID。

hMenu
[in] 指定用户单击菜单按钮时显示的菜单。 如果为 NULL,则不显示菜单按钮。

ptPos
[in] 使用屏幕坐标指定显示通知窗口的初始位置。 如果该参数为(-1, -1),则在屏幕右下角显示通知窗口。

pRTIDlgBar
[in] 涵盖通知窗口工作区的自定义对话框类的运行时类信息。

params
[in] 指定用于创建通知窗口的参数。

返回值

如果成功创建通知窗口,则为 TRUE;否则为 FALSE。

备注

调用此方法以创建通知窗口。 警报窗口的工作区包含一个子对话框,用于托管向用户显示的所有控件。

第一个方法重载会创建一个通知窗口,其中包含从应用程序资源加载的子对话框。 第一个方法重载还可以为自定义对话框类指定运行时类信息。

第二个方法重载会创建包含默认控件的通知窗口。 可以通过修改 CMFCDesktopAlertWndInfo 类来指定要显示的控件。

CMFCDesktopAlertWnd::GetAnimationSpeed

返回动画速度。

UINT GetAnimationSpeed() const;

返回值

通知窗口的动画速度(以毫秒为单位)。

备注

动画速度介绍通知窗口打开和关闭的速度。

CMFCDesktopAlertWnd::GetAnimationType

返回动画类型。

CMFCPopupMenu::ANIMATION_TYPE GetAnimationType();

返回值

以下动画类型之一:

  • NO_ANIMATION

  • UNFOLD

  • SLIDE

  • FADE

  • SYSTEM_DEFAULT_ANIMATION

CMFCDesktopAlertWnd::GetAutoCloseTime

返回自动关闭超时。

int GetAutoCloseTime() const;

返回值

通知窗口将自动关闭的时间(以毫秒为单位)。

注解

使用此方法可确定通知窗口自动关闭之前需要多少时间。

CMFCDesktopAlertWnd::GetCaptionHeight

返回标题栏的高度。

virtual int GetCaptionHeight();

返回值

标题栏的高度(以像素为单位)。

备注

可以在派生类中替代此方法。 默认实现:如果弹出窗口显示小标题栏,则返回小标题栏高度值(7 像素),或从 Windows API 函数 GetSystemMetrics(SM_CYSMCAPTION) 获得的值。

CMFCDesktopAlertWnd::GetLastPos

返回屏幕上桌面通知窗口的最后一个位置。

CPoint GetLastPos() const;

返回值

点,用屏幕坐标表示。

备注

此方法返回屏幕上通知窗口的最后一个有效位置。

CMFCDesktopAlertWnd::GetTransparency

返回透明度级别。

BYTE GetTransparency() const;

返回值

透明度级别介于 0 到 255(含)之间。 值越大,窗口越不透明。

备注

使用此方法检索通知窗口的当前透明度级别。

CMFCDesktopAlertWnd::HasSmallCaption

确定桌面通知窗口是小标题栏还是常规大小的标题栏。

BOOL HasSmallCaption() const;

返回值

如果弹出窗口显示小标题栏,则为 TRUE;如果弹出窗口显示常规大小的标题栏,则为 FALSE。

注解

使用此方法可确定弹出窗口是小标题栏还是常规大小的标题栏。 默认情况下,小标题栏的高度为 7 像素。 可以通过调用 Windows API 函数 GetSystemMetrics(SM_CYCAPTION) 获取常规大小标题栏的高度。

CMFCDesktopAlertWnd::OnBeforeShow

virtual BOOL OnBeforeShow(CPoint&);

参数

[in] CPoint&

返回值

注解

CMFCDesktopAlertWnd::OnClickLinkButton

当用户单击桌面通知菜单上的链接按钮时由框架调用。

virtual BOOL OnClickLinkButton(UINT uiCmdID);

参数

uiCmdID
[in] 未使用此参数。

返回值

始终为 FALSE。

备注

如果要在用户单击通知窗口上的链接时收到通知,请在派生类中替代此方法。

CMFCDesktopAlertWnd::OnCommand

virtual BOOL OnCommand(
    WPARAM wParam,
    LPARAM lParam);

参数

[in] wParam

[in] lParam

返回值

注解

CMFCDesktopAlertWnd::OnDraw

virtual void OnDraw(CDC* pDC);

参数

[in] pDC

备注

CMFCDesktopAlertWnd::ProcessCommand

BOOL ProcessCommand(HWND hwnd);

参数

[in] hwnd

返回值

注解

CMFCDesktopAlertWnd::SetAnimationSpeed

设置新的动画速度。

void SetAnimationSpeed(UINT nSpeed);

参数

nSpeed
[in] 指定新的动画速度(以毫秒为单位)。

备注

调用此方法以设置通知窗口的动画速度。 默认动画速度为 30 毫秒。

CMFCDesktopAlertWnd::SetAnimationType

设置动画类型。

void SetAnimationType(CMFCPopupMenu::ANIMATION_TYPE type);

参数

type
[in] 指定动画类型。

备注

调用此方法以设置动画类型。 可以指定以下值之一:

  • NO_ANIMATION

  • UNFOLD

  • SLIDE

  • FADE

  • SYSTEM_DEFAULT_ANIMATION

CMFCDesktopAlertWnd::SetAutoCloseTime

设置自动关闭超时。

void SetAutoCloseTime(int nTime);

参数

nTime
[in] 通知窗口自动关闭之前经过的时间(以毫秒为单位)。

备注

如果用户不与窗口交互,通知窗口会在指定时间后自动关闭。

CMFCDesktopAlertWnd::SetSmallCaption

在小标题栏和常规大小标题栏之间进行切换。

void SetSmallCaption(BOOL bSmallCaption = TRUE);

参数

bSmallCaption
[in] 如果为 TRUE,则指定通知窗口显示小标题栏;如果为 FALSE,则指定通知窗口显示常规大小的标题栏。

备注

调用此方法以显示小标题栏或常规大小的标题栏。 默认情况下,小标题栏的高度为 7 像素。 可以通过调用 Windows API 函数 GetSystemMetrics(SM_CYCAPTION) 获取常规大小的标题栏。

CMFCDesktopAlertWnd::SetTransparency

设置弹出窗口的透明度级别。

void SetTransparency(BYTE nTransparency);

参数

nTransparency
[in] 指定透明度级别。 此值必须介于 0 和 255(含)之间。 值越大,窗口越不透明。

注解

调用此函数以设置弹出窗口的透明度级别。

CMFCDesktopAlertWnd::GetDialogSize

virtual CSize GetDialogSize();

返回值

注解

另请参阅

层次结构图

CMFCDesktopAlertWndInfo 类
CMFCDesktopAlertDialog 类
CWnd 类