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.


  • Mod

    CWnd::SetIcon verwenden, wenn Du nur die Darstellung oben in der Ecke ändern möchtest.
    http://msdn2.microsoft.com/en-us/library/9cb3b7b5.aspx

    Wenn das Icon mit dem Aplikations Icon verbunden sein soll, musst Du nur die entsprechende Auflösung für das Icon ändern.


Anmelden zum Antworten