checkbox und owner
-
Hallo!
Wenn ich einer checkbox mittels SetWindowLong BS_OWNERDRAW hinzufüge,
dann kann ich die Checkbox zwar selber zeichnen, aber irgendwie kann man sie nicht mehr aktivieren. Nur indem ich ihr BM_SETCHECK zusende. Mit draufklicken geht gar nichts. Wenn ich ihren Stil auch noch auf Benachrictigung stelle, bekomme ich aber keine Benachrichtigung. Was muss ich da machen und woran liegt das?
-
Hast du wirklich den Style hinzugefügt (alten auslesen, Style hinzufügen, setzten), oder hast du nur diesen gesetzt?
-
hier ist wie ich den Style setze:
SetWindowLong(wnd, GWL_STYLE, GetWindowLong(wnd, GWL_STYLE) | BS_OWNERDRAW);
-
Und ohne den BS_OWNERDRAW-Style funktioniert die Checkbox (hast du BS_AUTOCHECKBOX verwendet?) - wie verhält es sich, wenn du BS_OWNERDRAW schon beim erstellen mit angibst?
-
also, wenn ich BS_OWNERDRAW nicht angebe, dann funkitoniert die checkbox einwandfrei. Im Res-Editor von vc6 kann man bei einer Checkbox nicht BS_OWNERDRAW angeben. Wenn ich res.rc dann mit notepad bearbeite zu der Zeile:
CONTROL "Check1",IDC_CHECK1,"button",BS_AUTOCHECKBOX | WS_TABSTOP | BS_OWNERDRAW,60,76,74,25Dann zeigt mir der res-editopr von vs nen pushbutton an anstatt ner checkbox. Und wenn ichs dann ausführe, dann geht die trotzdem nicht.
Benachrichtigung geht irgendwie gar nicht. Wenn ich bei der Checkbox Benachrichtigung aktiviere, bekomme ich keine Benachrichtigung. Wenn ichs bei nem normalen button angebe, dann beendet sich das Dialogfeld gleich wieder.hier mal die wndproc:
case BN_CLICKED: MessageBox(NULL, "", "", 0); break; default: return FALSE; break;
-
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.Das wäre auch ein möglicher Grund für das "Fehl-Verhalten"

-
na toll, das habe ich gar nicht gelesen...
Aber wie bekomme ich es denn dann hin, dass ich eine automatische Checkbox im Programm habe?
-
Wenn du sie ganz selber zeichnen willst, musst du dich wohl um alles selber kümmern - oder willst du nur die Farben verändern?
-
eigentlich will ich die Checkbox nur transparent haben. Ich male mein Fenster mit BitBlt aus. Aber die Stellen wo andere Elemente sind (Button, checkbox...) werden nicht bemalt, da bleibt ds Fenster grau. Nun bin ich soweit, dass wenn ich die Checkbox male, erstmal den passenden Hintergrund berechne und mit BitBlt blitte. JEtzt möchte ich eigentlich nur noch, dass die Checkbox gemalt wird, von mir aus auch in normalen WindowsStyle, nur eben, nicht so, dass sie den Hintergrund überschreibt.