Windows 桌面圖示由 SysListView32 控件 (在 Progman → SHELLDLL_DefView 層級下) 繪製。透過未公開訊息 0x1026 (設定背景模式) 與 0x1024 (設定前景色) 可將文字背景設為透明、前景設為白色。
#include
int main()
{
HWND hWnd = GetDesktopWindow();
// 依序尋找:Program Manager → SHELLDLL_DefView → SysListView32
hWnd = FindWindowEx(hWnd, 0, _T("Progman"), _T("Program Manager"));
if (!hWnd) return 1;
hWnd = FindWindowEx(hWnd, 0, _T("SHELLDLL_DefView"), NULL);
if (!hWnd) return 1;
hWnd = FindWindowEx(hWnd, 0, _T("SysListView32"), NULL);
if (!hWnd) return 1;
// 0x1026: 設定文字背景模式 (0=不透明, 1=透明)
// wParam=0, lParam=0xFFFFFFFF 表示透明
SendMessage(hWnd, 0x1026, 0, 0xFFFFFFFF);
// 0x1024: 設定文字前景色 (COLORREF)
// 0x00FFFFFF = 白色 (RGB(255,255,255))
SendMessage(hWnd, 0x1024, 0, 0x00FFFFFF);
// 強制重繪
InvalidateRect(hWnd, NULL, TRUE);
return 0;
}
Run 鍵。SystemParametersInfo(SPI_SETDESKWALLPAPER...) 僅能換壁紙,無法直接控制圖示文字樣式。同樣技巧可用於:
COLORREF)。