Dialog - CheckBox "abhaken"
- 
					
					
					
					
Hallo!
Ich möchte aus meinem Programmcode heraus entscheiden, ob eine Checkbox angekreutzt ist, oder nicht.
Wie kriegt man das hin???
 - 
					
					
					
					
zb so
m_CheckBox.SetCheck(FALSE);
 - 
					
					
					
					
FALSCH! Kann höchstens gehen, weil FALSE und BST_CHECKED als das selbe definiert sind ...

CButton* pCheckBox = (CButton*)GetDlgItem(0); // Deine ID anstelle von 0... if (pCheckBox == NULL) return; pCheckBox->SetCheck(BST_CHECKED); // BST_UNCHECKEDReferenz
CButton::SetCheck
 - 
					
					
					
					
also ich seh da keine probleme - zudem hat man sich mit der zeit schon sehr an TRUE und FALSE gewoehnt das man es doch auch nehmen kann - man kann auch einfach normales 0 und 1 nehmen - scheiss egal {o;
#define BST_UNCHECKED 0x0000 #define BST_CHECKED 0x0001#define FALSE 0 #define TRUE 1
 - 
					
					
					
					
...
m_CheckBox.SetCheck(0); // unchecked m_CheckBox.SetCheck(1); // checked
 - 
					
					
					
					
Ich finde es auch keine Tragik und die MS-Entwickler haben sich sicherlich etwas dabei gedacht 0=FALSE und 1=TRUE äquivalent für die Buttonstates zu verwednden.
Tückisch wird es einfach eil es auch BST_INDETERMINATE == 2 gibt bei einem Tristate Button und noch tückischer wird es wenn man BOOL statt bool verwendet.
BOOL bTrue = 4; m_bButton.SetCheck(bTrue);führt dann zu evtl. zu einem undefiniertem Verhalten.
Während:
bool bTrue = 4; m_bButton.SetCheck(bTrue);trefflich funktioniert!
Entsprechend sollte man wirklich schreiben was man meint:
BOOL bTrue = 4; m_bButton.SetCheck(bTrue ? BST_CHECKED : BST_UNCHECKED);Just my 2 cents!