-    // TODO
-}
-
-void wxCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags)
+    wxCommandEvent rEvent( wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId );
+    rEvent.SetInt(GetValue());
+    rEvent.SetEventObject(this);
+    ProcessCommand(rEvent);
+    return true;
+} // end of wxCheckBox::OS2Command
+
+bool wxCheckBox::Create(
+  wxWindow*                         pParent
+, wxWindowID                        vId
+, const wxString&                   rsLabel
+, const wxPoint&                    rPos
+, const wxSize&                     rSize
+, long                              lStyle
+, const wxValidator&                rValidator
+, const wxString&                   rsName
+)
+{
+    LONG                            lColor;
+    bool                            bOk;
+
+    if (!CreateControl( pParent
+                       ,vId
+                       ,rPos
+                       ,rSize
+                       ,lStyle
+                       ,rValidator
+                       ,rsName
+                      ))
+        return FALSE;
+
+
+    long                            osStyle = BS_AUTOCHECKBOX |
+                                              WS_TABSTOP      |
+                                              WS_VISIBLE;
+
+    bOk = OS2CreateControl( wxT("BUTTON")
+                           ,osStyle
+                           ,rPos
+                           ,rSize
+                           ,rsLabel
+                           ,0
+                          );
+    m_backgroundColour = pParent->GetBackgroundColour();
+    lColor = (LONG)m_backgroundColour.GetPixel();
+    ::WinSetPresParam( m_hWnd
+                      ,PP_BACKGROUNDCOLOR
+                      ,sizeof(LONG)
+                      ,(PVOID)&lColor
+                     );
+    wxAssociateWinWithHandle(m_hWnd, this);
+    return bOk;
+} // end of wxCheckBox::Create
+
+void wxCheckBox::SetLabel(
+  const wxString&                   rsLabel
+)