LoadIcon macht es nicht richtig…
… oder sollte man sagen: Nicht so wie erwartet.
In einer der Micosoft Newsgroup fand sich eine Anfrage, die sich um folgenden Code drehte:
1 2 3 4 5 6 7 | HICON m_hIcon[2]; [...] m_hIcon[0] = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_hIcon[1] = AfxGetApp()->LoadIcon(IDR_SMALL); [...] SetIcon(m_hIcon[0], TRUE); // Großes Symbol verwenden SetIcon(m_hIcon[1], FALSE); // Kleines Symbol verwenden |
Das Problem des Posters war, dass er sich Mühe mit dem Layout eine kleines Icons gegeben hat, aber leider immer nur ein verkleinertes 32×32 Icon verwendet wurde.
Das Problem liegt an der Verwendung von LoadIcon! LoadIcon lädt immer das Standard-Format 32×32. Bzw. in dem Format, dass durch das System als Standard-Icon-Größe vorgegeben wird.
Um es richtig zu machen, muss man das Icon wirklich in der gewünschten Größe laden. Dazu verwendet man die Funktion LoadImage. Eine kleine Helper Routine LoadIconEx kann dann wie folgt aussehen:
1 2 3 4 5 6 7 8 9 10 11 | HICON LoadIconEx(PCTSTR pszIconName, bool bLargeIcon) { HINSTANCE hInstance = ::AfxFindResourceHandle(pszIconName,RT_GROUP_ICON); return reinterpret_cast<HICON>(::LoadImage( hInstance, pszIconName, IMAGE_ICON, GetSystemMetrics(bLargeIcon ? SM_CXICON : SM_CXSMICON), GetSystemMetrics(bLargeIcon ? SM_CYICON : SM_CYSMICON), 0)); } |
Link für diesen Beitrag | RSS-Feed zu diesem Beitrag
Hinterlassen sie einen Kommentar:
Beachten sie bitte, dass Kommentare evtl. nicht sofort hier erscheinen. Die Kommentare werden zur Moderation an den Webmaster gesendet. Es kann also etwas dauern, bis Ihr Kommentar hier veröffentlicht wird!