У меня есть диалоговое окно, где мне нужно отобразить стандартный значок информации. Вот мой код RC:
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: статический элемент управления отображает значок 32x32 пикселя.
Однако, когда я переключаюсь на более высокое значение DPI (щелкнув правой кнопкой мыши на Рабочий стол , выбрав Разрешение экрана и нажав Сделать или другие элементы больше или меньше ) значок не масштабируется! Поскольку все остальное хорошо масштабируется, значок выглядит визуально намного меньше, чем соседний текст. Я ожидаю, что при 144 DPI (150%) размеры иконки будут 48x48 пикселей. Я объявил свое приложение с поддержкой DPI через XML-манифест.
Самое ужасное, что когда я использую свою собственную иконку (также из файла RC), все отлично масштабируется. Кроме того, функция MessageBox
, вызываемая с флагом MB_ICONINFORMATION
, также отображает уменьшенную версию значка.
Учитывая эти мысли, я предполагаю следующее:
- Статический элемент управления в стиле
SS_ICON
может отображать уменьшенные версии значков.
- Ресурс значка, который содержит стандартный значок информации, имеет уменьшенную версию значка (48x48).
Что я тогда делаю не так?