Das Markieren oder Entfernen der Markierung entspricht wieder einem ganz normalen Button-Klickereignis und wird daher auch über "WM_COMMAND" bearbeitet. Der Status wird mit der Button-Nachricht "BM_GETCHECK" abgefragt. Rückgabewert ist dann entweder BST_CHECKED (Haken gesetzt) oder BST_UNCHECKED (Haken entfernt). Im Beispiel wird das Ergebnis einer bool-Variablen zugeordnet
bCBFlag := (SendMessage(hwndChkBox,BM_GETCHECK,0,0) = BST_CHECKED);
und in negierter Form an die Checkbox zurückgegeben, um den Status mit der Nachricht "BM_SETCHECK" zu ändern:
SendMessage(hwndChkBox,BM_SETCHECK,CheckFlags[not(bCBFlag)],0);
Bei Radiobuttons ist ebenso vorzugehen, denn sie senden und empfangen die selben Nachrichten wie Checkboxen.