[C++/CLI] Start Button Ändern

Hallo Com,

Ich habe mit C++ begonnen nun möchte ich mit WinUser den Start Button ändern. Ausblenden funktioniert schon das heiß er wird gefunden aber wenn ich ein Neues Icon reinsetzen möchte bleibt alles beim Alten.

	HWND StartBtn = FindWindow(L"Button", L"Start");
	HANDLE img = LoadImage(NULL,L"G:\\USB\\open_icon_library-standard\\icons\\ico\\48x48\\apps\\accerciser.ico", IMAGE_ICON, LR_DEFAULTSIZE, LR_DEFAULTSIZE, LR_LOADFROMFILE);
	SendMessage(StartBtn, BM_SETIMAGE, IMAGE_ICON, (LPARAM) img);

Grüße Andy

C++ oder C++/CLI ??

Beides, also C++ und C++/CLI. aber ich mag mir eine Dll erstellen die dann den Button Automatisch Umwnadelt in das Bild das ausgewählt wird. Nur Funktioniert das leider nicht.

*** Edit ***

Es geht doch aber nur Ohne AERO, blöd das es mit Aero nicht Fnktioniert :frowning:

Hallo,

BM_SETIMAGE funktioniert nur, wenn der Button auch den Style “BS_BITMAP” hat, was vermutlich bei Aero nicht der Fall ist. Mit der Funktion “SetWindowPtrLong()” könntest du versuchen, den Style zu ändern. Ich weiß allerdings nicht, ob das zur Laufzeit noch funktioniert. Ansonsten bleibt nur der etwas aufwendigere Weg, über einen Message-Hook die WM_PAINT Message zu überschreiben und da ein eigenes BIld zu zeichnen.

Gruß
albatros

man lernt nicht 2 Sprachen gleichzeitig. C++/CLI ist die Verbindung von .NET zur nativen WinAPI. Für mehr ist das nicht gedacht. Außerdem produziert VisualStudio Müll für C++/CLI.

Naja, man verwechselt hier stark das lernen einer Programmiersprache mit dem kopieren eines Snippets aus dem Internet.
@Andy16823 : Ist die Java IDE schon fertig? - Oder wieso beginnst du wieder neue Projekte? ;D

Meinst du jetzt auf Ebene des IL Bytecodes oder was heißt das?

auf Quellcodeebene - die IDE packt die Methode in die Header mit rein


public: void foo() {
}

da muss man immer von hand nachbearbeiten - und ein Einsteiger wird dies nicht machen

@mogel : wie meinst du das ? nacharbeiten. @albatros : Danke das werde ich mal versuchen.

VisualStudio erzeugt in der Header-Datei


public: void foo() {
}

also die komplette Methode. Die hat aber in der Header nichts zu suchen. Die Methode selber muss in die CPP-Datei, in der H-Datei ist nur die Definition der Methode.

Header


public: void foo();

CPP


void CBar::foo() {
    // TODO
}

ich habe mir das so eingeprägt in dem Header werden nur methoden und Varaibeln deklariert, und in der Cpp werden diese verwendet. Da ich Anfangs problemme mit dem headern hatte, da diese mich verwirt hatten.

Fertig…?

Wir sind hier im Programmier-Forum :smiley: