/////////////////////////////////////////////////////////////////////////////
-// Name: checkbox.cpp
+// Name: src/os2/checkbox.cpp
// Purpose: wxCheckBox
// Author: David Webster
// Modified by:
// Created: 10/13/99
-// RCS-ID: $Id$
// Copyright: (c) David Webster
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
+#include "wx/checkbox.h"
+
#ifndef WX_PRECOMP
- #include "wx/checkbox.h"
#include "wx/brush.h"
#include "wx/scrolwin.h"
#include "wx/dcscreen.h"
// macros
// ----------------------------------------------------------------------------
-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_CHECKBOX, m_windowId );
rEvent.SetInt(GetValue());
rEvent.SetEventObject(this);
ProcessCommand(rEvent);
- return TRUE;
+ return true;
} // end of wxCheckBox::OS2Command
-bool wxCheckBox::Create(
- wxWindow* pParent
-, wxWindowID vId
-, const wxString& rsLabel
-, const wxPoint& rPos
-, const wxSize& rSize
-, long lStyle
-#if wxUSE_VALIDATORS
-, const wxValidator& rValidator
-#endif
-, const wxString& rsName
-)
+bool wxCheckBox::Create(wxWindow* pParent,
+ wxWindowID vId,
+ const wxString& rsLabel,
+ const wxPoint& rPos,
+ const wxSize& rSize,
+ long lStyle,
+ const wxValidator& rValidator,
+ const wxString& rsName )
{
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
- );
+ return false;
+
+
+ long osStyle = BS_AUTOCHECKBOX | WS_TABSTOP | WS_VISIBLE;
+
+ bool bOk = OS2CreateControl( wxT("BUTTON")
+ ,osStyle
+ ,rPos
+ ,rSize
+ ,rsLabel
+ ,0
+ );
+ m_backgroundColour = pParent->GetBackgroundColour();
+
+ LONG 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
-)
+void wxCheckBox::SetLabel( const wxString& rsLabel )
{
- ::WinSetWindowText(GetHwnd(), rsLabel.c_str());
+ wxString sLabel=::wxPMTextToLabel(rsLabel);
+ ::WinSetWindowText(GetHwnd(), 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;
nHeightCheckbox = nCheckSize;
}
- return wxSize( nWidthCheckbox
- ,nHeightCheckbox
- );
+ return wxSize( nWidthCheckbox, nHeightCheckbox );
} // end of wxCheckBox::DoGetBestSize
-void wxCheckBox::SetValue(
- bool bValue
-)
+void wxCheckBox::SetValue( bool bValue )
{
::WinSendMsg(GetHwnd(), BM_SETCHECK, (MPARAM)bValue, 0);
} // end of wxCheckBox::SetValue
return((LONGFROMMR(::WinSendMsg(GetHwnd(), BM_QUERYCHECK, (MPARAM)0, (MPARAM)0)) == 1L));
} // end of wxCheckBox::GetValue
-void wxCheckBox::Command (
- wxCommandEvent& rEvent
-)
+void wxCheckBox::Command ( wxCommandEvent& rEvent )
{
SetValue((rEvent.GetInt() != 0));
ProcessCommand(rEvent);
// 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
-