21,20
в вашем утверждении - это ширина и высота элемента управления значком в диалоговых единицах .Диалоговые единицы различаются в зависимости от таких параметров, как разрешение экрана и выбранный шрифт.Обычно на каждый диалоговый блок приходится 2-4 пикселя.По сути, вы дали значку что-то порядка 64x64 для отображения.
Чтобы получить пиксель с идеальным размером элемента управления, вы можете динамически изменять его размер, например, во время WM_INITDIALOG
.
Кроме того, я не уверен, какой метод код диалогового окна использует для загрузки значка - некоторые (например, LoadIcon) ограничивают размер до «стандартного» размера, который другие (например, LoadImage) не делают.