MFC 應用主視窗標題欄顯示閃爍文字(如「新訊息 3 條」),並同步閃爍任務欄圖示。
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;
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
}
工具欄按鈕無標題欄,需自行實現:
SetTimer(ID_TIMER_FLASH, 500, nullptr)。OnTimer 中切換按鈕圖示:m_wndToolBar.GetToolBarCtrl().SetButtonInfo(ID_BTN, nID, TBSTYLE_BUTTON, newImageIndex)。CMFCButton 設定 SetFaceImages 實現圖片切換動畫。