我有一個對話框,我需要顯示標準信息圖標。這裏是我的RC代碼:Win32:在高DPI下的對話框中顯示股票圖標
ICON "",IDC_ICON_INFORMATION,18,70,21,20
我處理WM_INITDIALOG消息如下:
HICON aIcn = LoadIcon(NULL, IDI_INFORMATION);
SendDlgItemMessage(m_hWnd, IDC_ICON_INFORMATION, STM_SETICON, (WPARAM) aIcn, 0);
一切正常,在96 DPI大:靜態控件顯示一個32×32像素的圖標。
然而,當我(在桌面通過單擊鼠標右鍵,選擇屏幕分辨率,並單擊製作或其他物品或大或小)切換到高DPI的圖標不結垢!由於其他一切都很好地縮放,圖標看起來在視覺上比相鄰文本小得多。我預計144 DPI(150%)的圖標尺寸將爲48x48像素。我確實通過XML清單將我的應用程序聲明爲DPI。
最令人頭疼的是,當我使用我自己定製的圖標(也來自RC文件)時,一切都完美地縮放。此外,使用MB_ICONINFORMATION
標誌調用的MessageBox
函數也會顯示圖標的縮放版本。
鑑於這些想法,我認爲以下幾點:
- 與
SS_ICON
風格的靜態控件可以顯示縮放圖標版本。 - 包含標準信息圖標的圖標資源具有縮放版本的圖標(48x48)。
我做錯了什麼呢?
貌似'LoadIconWithScaleDown'功能(在Vista及更高版本),可以做的工作的註釋部分的例子。任何其他想法? – Kerido 2010-08-25 11:24:04