Bitmaps in Menüs



  • Hallo, wenn ich ein Bitmap beim erstellen des Menüs mit InsertItem angebe wird das Bitmap ganz normal angezeigt, so weit so gut, aber das Bitmap hat einen weißen Hintergrund der auch angezeigt wird. Wie verhindere ich das der Hintergrund angezeigt wird? Muss er eine bestimmte Farbe haben oder muss ich ein bestimmtes Bitmap benutzen?



  • ich wage mich zu entsinnen, das man irgendwo den wert eingeben kann, den man beim Bitmap/Icon transparent haben will.
    ist aber schon ne ganze weile her, das ich mit bitmaps gearbeitet habe.

    aber vieleicht hilft dir das ja schonmal weiter... 🙄

    [NEW EDIT]
    habs wieder gefunden...
    kuck mal bei winapi.net unter codeschnipsel, da hab ich den BitmapToIcon beitrag gefunden. es gibt dort auch einen beitrag Bitmap auf Button leider ist der link im mom. tot.

    aber ich denke der andere beitrag erklärt es auch. du must eigendlich nur CreateIconIndirect durch CreateBitmapIndirect und die benötigte struktur ersetzen(natürlich mit den entsprechenden werten füllen). dann kannst du den transparenten bereich des bitmaps einstellen.



  • Die Lösung von dir sieht zwar gut aus aber es ist noch nicht ganz das was ich suche. In der Lösung wird auf Buttons eingegangen die Icons und Bitmaps akzeptieren. Menüs akzeptieren nur Bitmaps. Also ich möchte aus einem bereits existierenden Bitmap eines machen das vom Menü auch mit Transparenz angezeigt wird. Was muss ich dafür tun oder wie muss ich die Lösung für Buttons umschreiben?


  • Mod

    Du musst die Bitmaps laden und entsprechende GetSysColor(COLOR_MENU); manipulieren.
    Am einfachsten geht das wenn Du ein Icon lädst und dieses in einen eigenen DC ausgebist. Die erzeigte Bitmap packst Du dann in das Menü.

    Wie so oft ist das auch direkt in der MSDN beschrieben:
    http://msdn.microsoft.com/en-us/library/ms647558(VS.85).aspx



  • Das hatte ich auch schon gefunden die Idee ist auch nahe liegend aber wenn die Maus dann über das Menu Item fährt wird die Farbe des Items ja geändert solange die Maus darüber ist. Dann sieht man den Hintergrund wieder. Dazu fällt mir nur ein das Bitmap anzupassen wenn die Maus über dem Item ist aber eine Nachricht die mich darüber informiert das die Maus über einem Item ist habe ich nicht gefunden.



  • ThomasSt schrieb:

    Also ich möchte aus einem bereits existierenden Bitmap eines machen das vom Menü auch mit Transparenz angezeigt wird.

    ich weis, wenn du dir das beispiel BitmapToIcon genauer angeschaut hast, wirst du sehen das dort ein bitmap geladen und zu einem Icon gewandelt wird.

    ThomasSt schrieb:

    Was muss ich dafür tun oder wie muss ich die Lösung für Buttons umschreiben?

    🙄 versteh mich nicht falsch, aber ich werd dir bestimmt nicht deine hausaufgaben machen...

    die antwort hab ich dir schon gegeben.

    @rT!f@Ct schrieb:

    du must eigendlich nur CreateIconIndirect durch CreateBitmapIndirect und die benötigte struktur ersetzen(natürlich mit den entsprechenden werten füllen).

    also kuck in dem beispiel wo die funktion CreateIconIndirect aufgerufen und die Strucktur von ICONINFO erstellt wird. diese beiden tauscht du aus gegen CreateBitmapIndirect und deren strucktur. dann gibt es da noch eine funktion an die ICONINFO übergeben wird bevor sie entgültig an CreateIconIndirect übergeben wird. In dieser Funktion wird ICONINFO gefüllt. die funktion must du umschreiben einmal das sie die BITMAP Strucktur akzeptiert und fernen sie dir die geforderten werte der BITMAP Strucktur setzt. das sollte es gewesen sein.
    Danach bekommst du von CreateBitmapIndirect ein Bitmaphandle das du an CBitmap übergeben kannst.



  • Ahhhhhh jetzt versteh ich ich habe vorher den Text nicht richtig durchgelesen 🙂 ich versuchs mal.


Anmelden zum Antworten