Что происходит с иконкой CWnd - PullRequest
1 голос
/ 22 декабря 2010

У меня есть окно CWnd, которое я создаю динамически, и кажется, что значок для области строки заголовка и панели задач выбирается случайным образом или что-то в этом роде.

Чтобы установить значок, я вызываю:

// Set the icon for this dialog.  The framework does this automatically when the application's main window is not a dialog
m_hIcon = AfxGetApp()->LoadIconW(IDI_ICON);
SetIcon(m_hIcon, TRUE);         // Set big icon
SetIcon(m_hIcon, FALSE);        // Set small icon

Как и в образцах MFC, но кажется, что значок 32x32 всегда выбирается и масштабируется, даже если есть другие, более близкие соответствия.Значок в строке заголовка на самом деле имеет размер только 16x16, но он создается в версии 32x32.

Это приводит к беспорядку, когда значок 32x32 более детальный, чем значок 16x16, поскольку уменьшенный значок выглядит как размытие.

Окна CFrameWnd, кажется, как-то ведут себя по-разному, так как они, кажется, выбирают более близкое соответствие.

Кто-нибудь знает решение для принудительной подачи меньшего значка в строке заголовка, чтобы я мог сохранить большие значки для W7панель задач?

1 Ответ

2 голосов
/ 22 декабря 2010

Это LoadIcon, а не LoadIconW, это компилируется случайно.Метод MFC использует функцию API LoadIcon ().Из документации SDK:

LoadIcon может загружать только значок, размер которого соответствует системным значениям метрики SM_CXICON и SM_CYICON.Используйте функцию LoadImage для загрузки значков других размеров.

Вместо этого используйте LoadImage (), чтобы можно было передать соответствующий размер.Сделайте два вызова, чтобы получить большую и маленькую версию.Или сохраните маленькое изображение значка в другом значке с другим идентификатором ресурса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...