CButton::SetIcon

Quick_Mik

Mitglied
Hallo Leute.

Irgendwie bin ich zu blöd dafür...

Ich möchte auf einem Button (CButton) ein Icon anzeigen lassen.

Dazu möchte ich natürlich die Methode SetIcon nutzen.

Allerdings funktioniert es weder so
Code:
m_myButton.SetIcon(::LoadIcon(NULL,IDI_ICON)

noch so
Code:
HICON icon;
icon = LoadIcon(NULL,IDI_ICON);
m_myButton.SetIcon(icon);

Es kommt zwar bei beidem kein Fehler beim Kompilieren, jedoch wird auch kein Icon auf dem Button angezeigt...

Kann mir da vieleicht jemand weiterhelfen?

Die Suche hat nur ein Ergebniss gebracht, und dort war es nach der zweiten Variante gelöst. In der MSDN steht ein Codebeispiel nach erster Variante...

Ach ja, der Button ist als Symbol Button gekennzeichnet.

Gruß

M.
 
Du musst bei LoadIcon als ersten Parameter die HINSTANCE deines Programmes einsetzen (kannst du über GetModuleHandle( NULL ) erhalten).
 
Danke für die Antwort. Werde ich testen.

Hab mir in der Zwischenzeit allerdings das Projekt CButtonST von http://www.codeproject.com geholt.

Da sind solche Methoden wie SetIcon(), SetTooltipText() etc überschrieben und wesentlich einfacher zu handeln. Ausserdem sehen die Buttons noch dazu besser aus als der MFC Standard ;-)

Gruß

M.
 
Für all jene die es doch noch interessiert, einfach Icons auf seinen Button zu pappen:

Code:
m_button.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON_HAUMICHBLAU));

das wars ...
 
Nachtrag: Das HICON, das von LoadIcon von der CWinApp zurückkommt, muss übrigens genauso wie beim anderen LoadIcon mit DestroyIcon am Ende wieder gezappt werden.
 
Hallo zusammen,

kann es sein das man jeweils nur ein ICON einem Button zuordnen kann?
Ich habe ein Ordner ICON eingefügt und will es für mehrere Buttons anzeigen...
Das funktioniert aber nur für den ersten Button und der andere wird ohne ICON angezeigt...

Dann hab ich noch eine Frage:

Wo bekomme ich standard Windows ICONs her? Ich bräuchte ein Ordner-ICON.

Danke und Gruss
RuFF
 
Hiiilfe :(

Ich will dafür nicht einen neuen Thread aufmachen...


Kann mir jemand sagen wo ich meine standard Windows ICONs finde?
Oder ob man die überhaupt extrahieren kann

Gruss
RuFF
 
Die Windows-Icons sind kreuz und quer verteilt, einige findest du in der Explorer.exe, viele andere in der iexplore.exe, wieder andere in diversen DLLs im System-Ordner.

Mit einem Tool wie ResHacker kannst du die da rausziehen. Allerdings begibst du dich da in unsichere Gewässer, die Icons gehören Microsoft. Andererseits glaube ich nicht, dass die da gross nachprüfen ;)
 
Hallöchen,

erstmal danke für die Antwort!
Hat alles gefunzt und hab die Icons extrahiert...
Jetzt hab ich das Problem mit dem dartsellen...

Es geht sowohl:
Code:
m_button.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON_HAUMICHBLAU));

nicht, als auch:

Code:
m_myButton.SetIcon(::LoadIcon(NULL,IDI_ICON)

nicht, nur das hiebei der Compiler meckert, dass die int (ID) nicht in LPCSTR umgewandelt werden kann...

Ich habe auch sonst alles mögliche ausprobiert und es wird zum verrecken kein ICON angezeigt...

Da ich in den Button einstellungen nichts zu ICON gefunden habe mach ich das im Konstruktor des Dialogs manuell:

Code:
m_VailooMonButton.SetButtonStyle(BS_ICON, TRUE);

Aber ich bekomme das ICON einfach nicht angezeigt :(

Danke & Gruss
RuFF
 

Neue Beiträge

Zurück