Icon in der Taskleiste

Also Ich habe ja jetzt ein 16x16 Bit Icon, mein Problem ist es nur, es als Icon in der Titlebar anzeigen zu lassen..

Meine CreateWindowClassEx-Funktion scheint auch nicht richtig zu funktionieren:

Wenn ich zum Bsp als Parameter bei 'dwExStyle'
---------------------------------------
WS_EX_CONTEXTHELP
Includes a question mark in the title bar of the window. When the user clicks the question mark, the cursor changes to a question mark with a pointer. If the user then clicks a child window, the child receives a WM_HELP message. The child window should pass the message to the parent window procedure, which should call the WinHelp function using the HELP_WM_HELP command. The Help application displays a pop-up window that typically contains help for the child window.

WS_EX_CONTEXTHELP cannot be used with the WS_MAXIMIZEBOX or WS_MINIMIZEBOX styles.
-----------------------------------------
angebe, passiert nichts, also ist wohl vorher schon irgendetwas falsch gelaufen, und das Icon kann also auch nicht angezeigt werden...

Vielleicht liegt es auch daran, daß mein ICon nicht in den Resourcen unter Icon liegt sondern unter Bitmap, ich habe es ja importiert, und es wurde automatisch dort abgelegt, obwohl es die Endung .ico hat...

Aber dann müßte der Compiler ja eine Fehlermeldung geben, also ich weiß nicht mehr weiter....


Oder gehe ich falsch in der Annahme, daß der Parameter in WNDCLASSEX der Parameter ist, den ich ändern will-->hIconSm
 
Zuletzt bearbeitet:
Also daran, daß das ICon nicht inter Resourcen-->Icon zu finden war, hat es nicht gelegen, jetzt habe ich dort eins...

Auch kann ich keinen Cursor kreieren und einfügen, es geht irgendwie alles nicht, aber trotzdem keine Fehlermeldung?
 
Also, jetzt hab ich es hingekriegt, habe das folgendermaßen gelöst:

Becor ich die Fkt ShowWindow() aufrufe habe ich folgendes gemacht:

Code:
SetClassLong(hwnd,GCL_HICON,(LONG) LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)));

Jetzt funktioniert es!
Verstehe zwar nicht, wwarum man das nicht gleich beim Füllen der Fenster-KlassenStruktur machen kann, aber hauptsache, es funktioniert jetzt...:)
 
Hi!

Schaue Dir mal CWnd::SetIcon() an. Die Funktion kannst Du auch nach der Initialisierung des Windows aufrufen. Sinnvollerweise ruft man die Funktion für die Varianten 16x16 und 32x32 auf. Beide Größen können sich jedoch in einer Resource befinden.

Das Icon-Handle kann man innerhalb von MFC mit
AfxGetApp()->LoadIcon(...);
erhalten.

Schöne Grüße

Stefan
 
Hallo, Du scheinst Dich ja mit Icons auszukennen... ;-)

Wie ist das denn, wenn ich innerhalb der Applikation ein Dialogfenster aufmache, welches dann das gleiche Icon hat, wie das Hauptfenster!

Kann ich für ein bestimmtes FEnster mit Hilfe dessen Handles ein Icon setzen?

Mit MFC arbeite ich übrigens nicht!
 
Icons für ein Window setzen

Hi!

Man tut was man kann :))

Mit was arbeitest Du denn statt MFC?

In Windows kann man anscheinend wirklich alles mit Messages erschlagen, wie meine Recherchen ergeben haben.

Also:

1. Definiere in Deiner Klasse (oder sonstwo) eine Member-Variable
HICON m_hIcon;

2. Initialisiere sie im Konstruktor (oder wo es passt):
m_hIcon = ::LoadIcon(hInstance,MAKEINTRESOURCE(IDR_ICON));
Ich gehe mal davon aus, dass Du hInstance hast (in MFC brauche ich mich zum Glück nicht darum zu kümmern)


3. Sende nach dem Initlaisieren des Window folgende Nachrichten:
SendMessage(WM_SETICON, ICON_BIG, (LPARAM)m_hIcon);
SendMessage(WM_SETICON, ICON_SMALL, (LPARAM)m_hIcon);

Die Symbole ICON_BIG (1) und ICON_SMALL (0) sind in der WinUser.h definiert.

Siehe auch:
http://msdn.microsoft.com/library/d...WindowReference/WindowMessages/WM_SETICON.asp

Schöne Grüße

Stefan
 

Neue Beiträge

Zurück