Menü mit Icons
-
Das geht aber nur sehr bedingt. Da die Funktion nicht dafür gedacht ist.
SetMenuItemBitmaps
The SetMenuItemBitmaps function associates the specified bitmap with a menu item. Whether the menu item is selected or clear, the system displays the appropriate bitmap next to the menu item.Also anstatt Häkchen.
Unschön: Wenn ein Eintrag markiert ist, wird das Bitmap invertiert dargestellt. Bi jetzt hab eich noch nirgends im Web eien Lösung oder so gefunden. Keine Ahnung, wie die das bei Microsoft machen. ich hätte das nämlcih auch gerne.
-
Hi,
also SetMenuItemBitmaps funktioniert nicht.
Habe das gerade getestet. Mein Compiler bringt keinen
Fehler doch beim test zeigt es einfach kein
Icon im Menü an.Hat noch jemand eine andere Idee?
(Scheint ja mehrere zu interessieren wie sowas geht)Danke
Robert
-
-
Ich interressiere mich selber dafür wie ich ein icon daran pappen kann, und verwende kein MFC. Aber Coodeproject sind nur MFC und Ownerdrawn Menus gethdas einfacher?
-
Ich habe mit dem MFC Code auch noch meine Probleme.
-
Ich habe mich falsch ausgedrückt: ich habe gar keine MFC, da ich nicht VC++ benutze. Und MFC bitte ins MFC Forum
-
Original erstellt von Lars Skiba:
Ich interressiere mich selber dafür wie ich ein icon daran pappen kann, und verwende kein MFC. Aber Coodeproject sind nur MFC und Ownerdrawn Menus gethdas einfacher?Habe mir jetzt mal mehrere Owner Draw Menus runtergeladen und
ausprobiert. Die EXE-Files tun zwar wunderbar, aber compilieren
der Sourcen geht bei keinem.
Es muss doch irgendwo ein simples Beispiel für Menüs mit Icons geben.
Hat denn noch niemand so was programmiert (kann ich mir fast nicht vorstellen).Robby
-
Es gibt fast in jeder Anwendung mit Menuicons, geht das echt nur mit Ownerdrawnmenus
-
Also nochmal zum mitschreiben:
ich lade ein Bitmap über die Funktion:
HBITMAP LoadBitmapFile(const TCHAR *filename)
{
return (HBITMAP)LoadImage(NULL, filename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
}und rufe diese wie folgt auf:
hBmp_Install = LoadBitmapFile("install.bmp");dann erstelle ich mein MenuItem:
HMENU hMenu2;
hMenu2 = CreatePopupMenu ();lstrcpy (string, "Test");
mii.dwTypeData = string;
mii.cch = lstrlen (string);
mii.wID = 1;
InsertMenuItem (hMenu2, 1, TRUE, &mii);und weise diesem MenuItem mein Bitmap zu:
SetMenuItemBitmaps(hMenu2, 1, MF_BYPOSITION, hBmp_Install, hBmp_Install);Ich bekomme zwar keinen Compilerfehler, dummerweise
zeigt er aber auch das Icon nicht an im Menü.Wo liegt der Fehler?
Robert
-
OK Leute ich habs teilweise gelöst.
Es muss natürlich heissen:
SetMenuItemBitmaps(hMenu2, 1, TRUE, hBmp_Install, hBmp_Install);Dann zeigt er ein Menüicon an.(Restlicher Code wie oben)
Was mich direkt zu meiner nächsten Frage bringt:
Wie schaffe ich es, das er das Menüicon nicht invertiert
wenn ich mit der Maus auf den Eintrag gehe???Gruß
Robert
-
Hi,
hier gibt's auch noch mal ein Beispiel, allerdings auch Ownerdraw. Anders geht's wohl nicht:
http://win32programming.tripod.com/Win32tips06.html#3
-
könnte glatt in die FAQ wenn noch Code-Tags reingemacht werden
-
Also nochmal zum mitschreiben und mit Code-Tags :
ich lade ein Bitmap über die Funktion:
HBITMAP LoadBitmapFile(const TCHAR *filename) { return (HBITMAP)LoadImage(NULL, filename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); }
und rufe diese wie folgt auf:
hBmp_Install = LoadBitmapFile("install.bmp");
dann erstelle ich mein MenuItem:
HMENU hMenu2; hMenu2 = CreatePopupMenu (); lstrcpy (string, "Test"); mii.dwTypeData = string; mii.cch = lstrlen (string); mii.wID = 1; InsertMenuItem (hMenu2, 1, TRUE, &mii);
und weise diesem MenuItem mein Bitmap zu:
SetMenuItemBitmaps(hMenu2, 1, TRUE, hBmp_Install, hBmp_Install);
Ich hoffe einigen ist damit geholfen
Robert