Check Box als PUSHLIKE und mit Bild anstatt Text
-
Wie es der Titel schon sagt, möchte ich gerne eine CheckBox erstellen, welche den Style BS_PUSHLIKE besitzt, aber auch anstatt eines Textes ein Bitmap darstellt.
Ich will damit einen Button erreichen, der im normalen Zustand mir bsp. ein Bild einer Lupe zum Hereinzoomen anzeigt. Wenn ich dann darauf drücke, dann soll ein Bild einer Lupe zum Herauszoomen erscheinen.
Das mit dem Button klappt auch an sich. Nur mit dem Bild anzeigen will es nicht. Habe mal zum Testen nur Strings dargestellt. Das klappt!
Dann habe ich mal mit der Methode Get-/SetButtonStyle() herumgespielt.
Dabei fiel mir auf, dass man wohl BS_AUTOCHECKBOX und BS_PUSHLIKE und BS_BITMAP nicht kombinieren kann. Leider hatte ich gedacht, dass es so ginge.
Liegt am BS_BITMAP. Das akzeptiert dann nicht.
Daher meine Frage: Hat von euch vielleicht jemand eine Idee oder Ahnung, wie ich das bewerkstelligen könnte?
-
Den Button selber zeichnen ? => BS_OWNERDRAW
-
Irgendwie klappt es nicht?!
DWORD checkyStyle = BS_OWNERDRAW|BS_BITMAP|BS_AUTOCHECKBOX|BS_PUSHLIKE; m_checky.Create(_T("Test"),checkyStyle,CRect(client.right-150,client.bottom-150,client.right-50,client.bottom-50) ,AfxGetApp()->m_pActiveWnd,1);Was mache ich falsch?
-
Er scheint irgendwie
BS_OWNERDRAWnicht zu mögen?!?
Führt immer zum Assertion Fehler. Auch wenn ich es alleine als Style nehme.EDIT: Habe übrigens eine dialogfeldbasierende Anwendung. Und versuche dies in der OnInitDialog().
-
Ich glaub, du hast das mit dem OwnerDraw falsch verstanden...
Du sollst nicht nur den Stil auf BS_OWNERDRAW machen, sondern du musst dich noch selber um das darstellen/zeichnen deiner checkbox kümmern
Und das hab ich noch ausm MSDN:BS_OWNERDRAW
Creates an owner-drawn button. The owner window receives a WM_DRAWITEM message when a visual aspect of the button has changed. Do not combine the BS_OWNERDRAW style with any other button styles.Für mehr Infos einfach mal selbst im MSDN suchen

-
dwStyle
Specifies the button control's style. Apply any combination of button styles to the button.Das habe ich gefunden (in der MSDN). Die Betonung liegt auf any. Ich suche immer erst selbst, bevor ich hier poste.

Aber danke für den Hinweis. Mal schauen, was sich machen lässt.