Флажки представляют собой маленькие квадратные окна с текстом; текст обычно размещается справа от флажка. Флажки, как правило, действуют как двухпозиционные переключатели: один щелчок вызывает появление контрольной метки (птички); другой щелчок приводит к исчезновению контрольной метки. Часть флажки объединяют в группы, чтобы сконцентрироваться на опциях какого-то одного объекта. В последнем случае состояния одних из кнопок могут зависеть от состояний других. При использовании стиля BS_CHECKBOX программа должна сама устанавливать и снимать контрольную метку, посылая окну кнопки сообщение BM_SETCHECK и 1 или 0 в параметре wParam. В случае стиля BS_AUTOCHECKBOX флажок сам включает и выключает себя. Оба окна посылают традиционное для кнопок сообщение WM_COMMAND родительскому окну при щелчке мыши на поверхности кнопки.
Можно также получить текущее состояние флажка послав в кнопку сообщение BM_GETCHECK:
int Result = (int) SendMessage(hwndButton, BM_GETCHACK, 0, 0);
Существует еще два типа флажков на три состояния - BS_3STATE, BS_AUTO3STATE. Их поведение аналогично описанным флажкам, но они могут иметь третье состояние – квадрат метки закрашивается серым цветом и к возможным состояниям 0 и 1 добавляется состояние 2.