// Name: src/msw/tglbtn.cpp
// Purpose: Definition of the wxToggleButton class, which implements a
// toggle button under wxMSW.
-// Author: John Norris, minor changes by Axel Schlueter
-// and William Gallafent.
+// Author: John Norris, minor changes by Axel Schlueter
+// and William Gallafent.
// Modified by:
// Created: 08.02.01
// RCS-ID: $Id$
// Copyright: (c) 2000 Johnny C. Norris II
-// License: Rocketeer license
+// License: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
-// declatations
+// declarations
// ============================================================================
// ----------------------------------------------------------------------------
#pragma hdrstop
#endif
-#include "wx/tglbtn.h"
-
#if wxUSE_TOGGLEBTN
+#include "wx/tglbtn.h"
+
#ifndef WX_PRECOMP
#include "wx/button.h"
#include "wx/brush.h"
event.SetInt(GetValue());
event.SetEventObject(this);
ProcessCommand(event);
- return TRUE;
+ return true;
}
// Single check box item
const wxString& name)
{
if ( !CreateControl(parent, id, pos, size, style, validator, name) )
- return FALSE;
-
+ return false;
+
if ( !MSWCreateControl(wxT("BUTTON"), label, pos, size) )
- return FALSE;
-
- return TRUE;
-}
+ return false;
-wxBorder wxToggleButton::GetDefaultBorder() const
-{
- return wxBORDER_NONE;
+ return true;
}
WXDWORD wxToggleButton::MSWGetStyle(long style, WXDWORD *exstyle) const
return msStyle;
}
-void wxToggleButton::SetLabel(const wxString& label)
-{
- SetWindowText(GetHwnd(), label);
-}
-
wxSize wxToggleButton::DoGetBestSize() const
{
wxString label = wxGetWindowText(GetHWND());
int wBtn;
- GetTextExtent(label, &wBtn, NULL);
+ GetTextExtent(GetLabelText(label), &wBtn, NULL);
int wChar, hChar;
- wxGetCharSize(GetHWND(), &wChar, &hChar, &GetFont());
+ wxGetCharSize(GetHWND(), &wChar, &hChar, GetFont());
// add a margin - the button is wider than just its label
wBtn += 3*wChar;
// the button height is proportional to the height of the font used
int hBtn = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(hChar);
- wxSize sz = wxButton::GetDefaultSize();
- if (wBtn > sz.x)
- sz.x = wBtn;
- if (hBtn > sz.y)
- sz.y = hBtn;
-
+#if wxUSE_BUTTON
+ // make all buttons of at least standard size unless wxBU_EXACTFIT is given
+ if ( !HasFlag(wxBU_EXACTFIT) )
+ {
+ const wxSize szMin = wxButton::GetDefaultSize();
+ if ( wBtn < szMin.x )
+ wBtn = szMin.x;
+ if ( hBtn < szMin.y )
+ hBtn = szMin.y;
+ }
+#endif // wxUSE_BUTTON
+
+ wxSize sz(wBtn, hBtn);
+
+ CacheBestSize(sz);
return sz;
}
void wxToggleButton::SetValue(bool val)
{
- SendMessage(GetHwnd(), BM_SETCHECK, val, 0);
+ ::SendMessage(GetHwnd(), BM_SETCHECK, val, 0);
}
#ifndef BST_CHECKED
bool wxToggleButton::GetValue() const
{
#ifdef __WIN32__
- return (SendMessage(GetHwnd(), BM_GETCHECK, 0, 0) == BST_CHECKED);
+ return (::SendMessage(GetHwnd(), BM_GETCHECK, 0, 0) == BST_CHECKED);
#else
- return ((0x001 & SendMessage(GetHwnd(), BM_GETCHECK, 0, 0)) == 0x001);
+ return ((0x001 & ::SendMessage(GetHwnd(), BM_GETCHECK, 0, 0)) == 0x001);
#endif
}
}
#endif // wxUSE_TOGGLEBTN
-