+void wxCheckBox::DoSet3StateValue(wxCheckBoxState state)
+{
+    m_inSetValue = true;
+
+    unsigned char value;
+
+    switch (state)
+    {
+    case wxCHK_UNCHECKED: value = XmUNSET; break;
+    case wxCHK_CHECKED: value = XmSET; break;
+    case wxCHK_UNDETERMINED: value = XmINDETERMINATE; break;
+    }
+
+    XtVaSetValues( (Widget) m_mainWidget,
+                   XmNset, value,
+                   NULL );
+
+    m_inSetValue = false;
+}
+
+wxCheckBoxState wxCheckBox::DoGet3StateValue() const
+{
+    unsigned char value = 0;
+
+    XtVaGetValues( (Widget) m_mainWidget,
+                   XmNset, &value,
+                   NULL );
+
+    switch (value)
+    {
+    case XmUNSET: return wxCHK_UNCHECKED;
+    case XmSET: return wxCHK_CHECKED;
+    case XmINDETERMINATE: return wxCHK_UNDETERMINED;
+    }
+
+    // impossible...
+    return wxCHK_UNDETERMINED;
+}
+