[C++] checkbox (winapi)

rook

Erfahrenes Mitglied
huhu :p

äh... wie finde ich heraus ob eine checkbox nun makiert ist, oder nicht? *grübel*
hab schon verschiedenes probiert.. aber nichts gefunden...
 
Geht eingentlich ganz einfach, wenn man weiss wie! :p
Code:
if(SendMessage(hwndchk, BM_GETCHECK, 0, 0)==BST_CHECKED)MessageBox(0,"Checked","CheckBox",0);
else if(SendMessage(hwndchk, BM_GETCHECK, 0, 0)==BST_UNCHECKED)MessageBox(0,"Unchecked","CheckBox",0);
else if(SendMessage(hwndchk, BM_GETCHECK, 0, 0)==BST_INDETERMINATE)MessageBox(0,"Indeterminated","CheckBox",0);
 
is ja total umständlich jedes mal eine nachricht zu schicken :p
aber es geht :)

nun.... wozu ist das "BST_INDETERMINATE"?

#edit:
vieleicht für den 3. status?
 
Zuletzt bearbeitet:
Das sind die Bedeutungen der einzelnen Flags:
BST_CHECKED Gesetzte Markierung
BST_INDETERMINATE Gedimmte Markierung
BST_UNCKECKED keine Markierung

Genauer:
Der Status BST_INDETERMINATE ist nur aktiv, wenn man BS_3STATE or BS_AUTO3STATE gesetzt hat.
Was bedeutet dies im Klartext. Wird eine Checkbox markiert, dann nochmal, dann bleibt sie Markiert, wird aber gedimmt. Diesen Zustand nennt man BST_INDETERMINATE.
Wird dann nochmals gedrückt, dann wird die Markierung wieder aufgehoben.

Setze einfach mal den Style BS_3STATE bei Deiner Checkbox, dann siehst Du genau was gemeint ist.
 
Zuletzt bearbeitet:
in MS VC++ steht "Tri-State" *g*..
hm... ich hab noch eine frage, kann man die checkboxen denn zu einer gruppe zusammenfügen... denn ich will das nur 1 von denen checkboxen makiert ist, und klickt man auf eine andere, wir die makiert, und die makierung der anderen verschwindet.... macht man die makierung aller checkboxen weg, so wird die standard checkbox makiert, d.h. also 1 checkbox muss immer makiert sein.....

das ist wahrscheinlich entwicklungsumgebungsabhängig:)-))
ich hab MS VC++ 6.0 Standard Edition, falls sich jmd. auskennt :)

ich finde da zwar ein button, "Gruppe", aber wenn ich die checkboxen zu einer gruppe hinzufüge... passiert rein garnichts, oder mir ist es einfach nicht aufgefallen, was passieren soll...

hab dann ein bissel gecoded, womit es auch fast funkioniert, aber da ich noch andere checkboxen hab, auser diese gruppe, funkioniert das dann doch nicht so ganz, und gibt noch probleme, die ich aber irgendwie nicht lösen kann :rolleyes:
 
Sowas was Du machen willst, würde ich NICHT mit Checkboxen machen. Entspricht auch gar nicht der Windows-Norm. Soetwas macht man dann eher mit Radiobuttons, denn die kann man zu einer Gruppe zusammenfassen, so dass immer nur eine Option gewählt sein kann.
 
lol, ist mir garnicht aufgefallen, das man die radio buttons auch als normalen button anzeigen kann, das is gut....
nur klappt das mit der gruppierug nicht, es geht nur ohne :p

ist die abfrage genauso wie mit den checkboxen?
BM_GETCHECK, BM_SETCHECK, BST_CHECKED, BST_UNCHECKED?

#edit:
jup, die messages sind gleich, danke, wär mir jez garnicht aufgefallen :)

trotzdem noch eine frage, kann mir mal einer sagen, woran das liegt, wenn ich ein bitmap einbau, warum das dann nicht angezeigt wird? egal ob ich es importiere, oder direkt in vc++ gestalte.....
 
Zuletzt bearbeitet:
lol, ist mir garnicht aufgefallen, das man die radio buttons auch als normalen button anzeigen kann, das is gut....
nur klappt das mit der gruppierug nicht, es geht nur ohne
Wie hast Du gruppiert?
trotzdem noch eine frage, kann mir mal einer sagen, woran das liegt, wenn ich ein bitmap einbau, warum das dann nicht angezeigt wird? egal ob ich es importiere, oder direkt in vc++ gestalte.....
Erkläre es mal genauer! Wo einbauen und wie!
 
Zuletzt bearbeitet:
alle radio buttons makiert, und dann auf "Gruppe" geklickt.... das geht so nicht, is aber auch nicht wichtig, denn es geht ohne Gruppierung automatisch...


nunja, ich habe ein "Steuerelement" eingefügt, von dem typ Bitmap, dieses bild wird in der arbeitsumgebung anzeigt, doch im fertigen programm (exe), nicht... ist an der stelle also nichts....
ich hab gedacht, es liegt evtl. daran, das es kein 256farben bild ist, wobei er nur gesagt hat, das es richtig importiert ist, kann aber nur nicht angezeigt werden...
deswegen hab ich mir ein 256farben bitmap aus einem anderen arbeitsbereich genommen, das funktioniert genausowenig.... also muss es wohl irgendwas mit meinem dialog zu tun haben... das atribut "Sichtbar" ist gesetzt....

kommt nichts :(

#edit:
vieleicht hab ich mich zu undeutlich ausgedrückt...
vc++ sagt, wenn ich mir eine vorschau anzeigenlassen will, dass das bild mehr als 256farben hat, und so keine vorschau angezeigt werden kann, ich kann es auch nicht bearbeiten(direkt in vc++)... so, aber wenn ich das bild dann auf dem dialog einfüge, sieht man es... und wenn ich dann auf build gehe.... sieht man es in dem fertigen programm wiederum nicht..
 
Zuletzt bearbeitet:
bei mir kalppt das nicht

Code:
if(SendMessage(IDC_CHECK2, BM_GETCHECK)==BST_UNCHECKED)MessageBox("YEAH");

Der gibt mir immer aus "Yeah" auch wennn das teil markiert ist :(

die 0,0 im ersten teil musste ich entfernen weil er meinte die funktion unterstützt keine 4 parameter (vc++6)
 
Zurück