分享方式:


CMFCDesktopAlertWnd Class

類別 CMFCDesktopAlertWnd 會實作無模式對話框的功能,該對話框會出現在畫面上,以通知使用者有關事件。

如需更多詳細資料,請參閱 Visual Studio 安裝位置下之 VC\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::P rocessCommand
CMFCDesktopAlertWnd::SetAnimationSpeed 設定新的動畫速度。
CMFCDesktopAlertWnd::SetAnimationType 設定動畫類型。
CMFCDesktopAlertWnd::SetAutoCloseTime 設定自動關閉逾時。
CMFCDesktopAlertWnd::SetSmallCaption 在小型和一般標題之間切換。
CMFCDesktopAlertWnd::SetTransparency 設定透明度層級。

備註

桌面警示視窗可以是透明的,它可以以動畫效果顯示,而且它可以消失(在指定的延遲之後,或使用者按兩下關閉按鈕關閉它時)。

桌面警示視窗也可以包含預設對話框,進而包含圖示、消息正文(標籤)和連結。 或者,桌面警示視窗可以包含來自應用程式資源的自定義對話方塊。

您會在兩個步驟中建立桌面警示視窗。 首先,呼叫 建構函式來建構 CMFCDesktopAlertWnd 物件。 其次,呼叫 CMFCDesktopAlertWnd::Create 成員函式來建立視窗,並將它附加至 CMFCDesktopAlertWnd 物件。

物件 CMFCDesktopAlertWnd 會建立特殊的子對話框,以填滿桌面警示視窗的工作區。 對話框擁有其上的所有控制件。

若要在彈出視窗上顯示自訂對話框,請遵循下列步驟:

  1. CMFCDesktopAlertDialog 衍生類別。

  2. 在資源中建立子對話框範本。

  3. 使用對話框範本的資源標識碼和衍生類別之運行時間類別資訊的指標,呼叫 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]指定警示視窗的資源識別碼。

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

  • 展開

  • 褪色

  • SYSTEM_DEFAULT_ANIMATION

CMFCDesktopAlertWnd::GetAutoCloseTime

傳回自動關閉逾時。

int GetAutoCloseTime() const;

傳回值

時間,以毫秒為單位,之後警示視窗會自動關閉。

備註

使用這個方法來判斷警示視窗自動關閉之前應該經過多少時間。

CMFCDesktopAlertWnd::GetCaptionHeight

傳回標題的高度。

virtual int GetCaptionHeight();

傳回值

標題的高度,以像素為單位。

備註

這個方法可以在衍生類別中覆寫。 默認實作:如果彈出視窗應該顯示小型標題,或從 Windows API 函 GetSystemMetrics(SM_CYSMCAPTION)式取得的值,則會傳回小型標題高度值 (7 像素)。

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::P rocessCommand

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

  • 展開

  • 褪色

  • 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 類別