IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl)
IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox)
+extern void wxAssociateWinWithHandle( HWND hWnd
+ ,wxWindowOS2* pWin
+ );
+
// ============================================================================
// implementation
// ============================================================================
// wxCheckBox
// ----------------------------------------------------------------------------
-bool wxCheckBox::OS2Command(
- WXUINT WXUNUSED(uParam)
-, WXWORD WXUNUSED(wId)
-)
+bool wxCheckBox::OS2Command( WXUINT WXUNUSED(uParam),
+ WXWORD WXUNUSED(wId) )
{
- wxCommandEvent rEvent( wxEVT_COMMAND_CHECKBOX_CLICKED
- ,m_windowId
- );
+ wxCommandEvent rEvent( wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId );
rEvent.SetInt(GetValue());
rEvent.SetEventObject(this);
ProcessCommand(rEvent);
- return TRUE;
+ return true;
} // end of wxCheckBox::OS2Command
bool wxCheckBox::Create(
, const wxPoint& rPos
, const wxSize& rSize
, long lStyle
-#if wxUSE_VALIDATORS
, const wxValidator& rValidator
-#endif
, const wxString& rsName
)
{
+ LONG lColor;
+ bool bOk;
+
if (!CreateControl( pParent
,vId
,rPos
,rSize
,lStyle
-#if wxUSE_VALIDATORS
,rValidator
-#endif
,rsName
))
return FALSE;
+
long osStyle = BS_AUTOCHECKBOX |
WS_TABSTOP |
WS_VISIBLE;
- return OS2CreateControl( wxT("BUTTON")
- ,osStyle
- ,rPos
- ,rSize
- ,rsLabel
- ,0
- );
+ 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
)
{
- ::WinSetWindowText(GetHwnd(), rsLabel.c_str());
+ wxString sLabel=::wxPMTextToLabel(rsLabel);
+ ::WinSetWindowText(GetHwnd(), (PSZ)sLabel.c_str());
} // end of wxCheckBox::SetLabel
wxSize wxCheckBox::DoGetBestSize() const
{
- static int nCheckSize = 0;
-
- if (!nCheckSize)
- {
- wxScreenDC vDc;
-
- vDc.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
-
- //
- // The height of a standard button in the dialog units is 8,
- // translate this to pixels (as one dialog unit is precisely equal to
- // 8 character heights, it's just the char height)
- //
- nCheckSize = vDc.GetCharHeight();
- }
-
- int nWidthCheckbox;
- int nHeightCheckbox;
- wxString sStr = wxGetWindowText(GetHWND());
-
- if (!sStr.IsEmpty())
+ // We should probably compute nCheckSize but it seems to be a constant
+ // independent of its label's font size and not made available by OS/2.
+ int nCheckSize = RADIO_SIZE;
+ int nWidthCheckbox;
+ int nHeightCheckbox;
+ wxString sStr = wxGetWindowText(GetHWND());
+
+ if (!sStr.empty())
{
GetTextExtent( sStr
,&nWidthCheckbox
,&nHeightCheckbox
);
- nWidthCheckbox += nCheckSize + GetCharWidth();
+ nWidthCheckbox += nCheckSize;
if (nHeightCheckbox < nCheckSize)
nHeightCheckbox = nCheckSize;
// wxBitmapCheckBox
// ----------------------------------------------------------------------------
-bool wxBitmapCheckBox::Create(
- wxWindow* pParent
-, wxWindowID vId
-, const wxBitmap* pLabel
-, const wxPoint& rPos
-, const wxSize& rSize
-, long lStyle
-#if wxUSE_VALIDATORS
-, const wxValidator& rValidator
-#endif
-, const wxString& rsName
-)
+bool wxBitmapCheckBox::Create( wxWindow* pParent,
+ wxWindowID vId,
+ const wxBitmap* WXUNUSED(pLabel),
+ const wxPoint& rPos,
+ const wxSize& rSize,
+ long lStyle,
+ const wxValidator& rValidator,
+ const wxString& rsName)
{
SetName(rsName);
#if wxUSE_VALIDATORS
);
::WinShowWindow(hButton, TRUE);
- return TRUE;
+ return true;
} // end of wxBitmapCheckBox::Create
-void wxBitmapCheckBox::SetLabel(
- const wxBitmap& rBitmap
-)
+void wxBitmapCheckBox::SetLabel( const wxBitmap& WXUNUSED(rBitmap) )
{
wxFAIL_MSG(wxT("not implemented"));
} // end of wxBitmapCheckBox::SetLabel
-