Eigenes Icon verwenden
-
Hi,
ich will ein eigenes Icon in der Titelleiste anzeigen, das klappt leider nicht.
Meine Vorgehensweise:
1.In Ressourcen-Ansicht auf Icon klicken und ein Icon importieren, dadurch erscheint ein IDI_ICON1. (welches Symbol ich muss ich importieren, großes oder kleines? Ich habe beide.)
2.Zu der Klasse CMeinDlg zwei member-Variablen hinzufügen, beide vom Typ HICON, etwa m_hLarge und m_hSmall. (hier bin ich nicht sicher, ob zwei nötig sind)
3.Im Konstruktor CMeinDlg() Großes Icon laden:m_hLarge = AfxGetApp()->LoadIcon(IDI_ICON1);4.Kleines Icon laden:
m_hSmall = (HICON)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 16,16, LR_DEFAULTCOLOR);5.In OnPaint() Symbole zeicnen:
void CMeineDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // Gerätekontext für Zeichnen SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Symbol in Client-Rechteck zentrieren int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Symbol zeichnen //dc.DrawIcon(x, y, m_hIcon); dc.DrawIcon(x, y, m_hLarge); //nur diese und die nächste Zeile habe ich hinzugefügt ::DrawIconEx(dc,50,270,m_hSmall,0,0,0,NULL,DI_NORMAL); } else { CDialog::OnPaint(); } }Wenn ich das vorgegebene Icon auskommentiere, habe ich nur ein leeres Feld in der Titelleiste... Was mache ich falsch? In FAQ habe nichts gefunden.
-
CWnd::SetIcon verwenden, wenn Du nur die Darstellung oben in der Ecke ändern möchtest.
http://msdn2.microsoft.com/en-us/library/9cb3b7b5.aspxWenn das Icon mit dem Aplikations Icon verbunden sein soll, musst Du nur die entsprechende Auflösung für das Icon ändern.