首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MFC 標題欄閃爍字幕實現:FlashWindowEx API 完整封裝

     編輯:程式設計疑難解答

需求

MFC 應用主視窗標題欄顯示閃爍文字(如「新訊息 3 條」),並同步閃爍任務欄圖示。

核心 API:FlashWindowEx

BOOL FlashWindowEx(PFLASHWINFO pfwi);

typedef struct tagFLASHWINFO {
    UINT  cbSize;
    HWND  hwnd;
    DWORD dwFlags;   // FLASHW_CAPTION | FLASHW_TRAY | FLASHW_TIMER | FLASHW_TIMERNOFG
    UINT  uCount;    // 閃爍次數
    DWORD dwTimeout; // 閃爍頻率 (ms),0 為系統預設
} FLASHWINFO, *PFLASHWINFO;

MFC 封裝類

class CTitleFlasher {
public:
    static void FlashTitle(HWND hWnd, UINT count = 5, DWORD timeout = 500) {
        FLASHWINFO fi = { sizeof(fi) };
        fi.hwnd = hWnd;
        fi.dwFlags = FLASHW_CAPTION | FLASHW_TRAY | FLASHW_TIMER;
        fi.uCount = count;
        fi.dwTimeout = timeout;
        FlashWindowEx(&fi);
    }
    static void StopFlash(HWND hWnd) {
        FLASHWINFO fi = { sizeof(fi) };
        fi.hwnd = hWnd;
        fi.dwFlags = FLASHW_STOP;
        FlashWindowEx(&fi);
    }
};

// 使用範例
void CMainFrame::OnNewMessage() {
    CTitleFlasher::FlashTitle(m_hWnd, 10, 800); // 閃爍 10 次,間隔 800ms
}

同步工具欄按鈕閃爍

工具欄按鈕無標題欄,需自行實現:

  1. 定時器 SetTimer(ID_TIMER_FLASH, 500, nullptr)。
  2. OnTimer 中切換按鈕圖示:m_wndToolBar.GetToolBarCtrl().SetButtonInfo(ID_BTN, nID, TBSTYLE_BUTTON, newImageIndex)。
  3. 或使用 CMFCButton 設定 SetFaceImages 實現圖片切換動畫。

參考資源

CSDN 範例:MFC 標題欄閃爍完整代碼

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved