X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1db8dc4a2b5b664e922b9d049320ec0354e0eccf..c0badb709a86b91a203416784b649e3d00c699c7:/src/msw/tglbtn.cpp diff --git a/src/msw/tglbtn.cpp b/src/msw/tglbtn.cpp index 353ac6526b..e3e986fe8c 100644 --- a/src/msw/tglbtn.cpp +++ b/src/msw/tglbtn.cpp @@ -3,15 +3,16 @@ // Purpose: Definition of the wxToggleButton class, which implements a // toggle button under wxMSW. // 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 // ============================================================================ // ---------------------------------------------------------------------------- @@ -24,10 +25,10 @@ #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" @@ -62,7 +63,7 @@ bool wxToggleButton::MSWCommand(WXUINT WXUNUSED(param), WXWORD WXUNUSED(id)) event.SetInt(GetValue()); event.SetEventObject(this); ProcessCommand(event); - return TRUE; + return true; } // Single check box item @@ -73,63 +74,50 @@ bool wxToggleButton::Create(wxWindow *parent, wxWindowID id, const wxValidator& validator, const wxString& name) { - if (!CreateBase(parent, id, pos, size, style, validator, name)) - return FALSE; - - parent->AddChild(this); - - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - - long msStyle = BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP | WS_CHILD | WS_VISIBLE; -#ifdef __WIN32__ - if(m_windowStyle & wxBU_LEFT) - msStyle |= BS_LEFT; - if(m_windowStyle & wxBU_RIGHT) - msStyle |= BS_RIGHT; - if(m_windowStyle & wxBU_TOP) - msStyle |= BS_TOP; - if(m_windowStyle & wxBU_BOTTOM) - msStyle |= BS_BOTTOM; -#endif + if ( !CreateControl(parent, id, pos, size, style, validator, name) ) + return false; - m_hWnd = (WXHWND)CreateWindowEx(MakeExtendedStyle(m_windowStyle), - wxT("BUTTON"), label, - msStyle, 0, 0, 0, 0, - (HWND)parent->GetHWND(), - (HMENU)m_windowId, - wxGetInstance(), NULL); + if ( !MSWCreateControl(wxT("BUTTON"), label, pos, size) ) + return false; - if ( m_hWnd == 0 ) - { - wxLogError(_T("Failed to create a toggle button")); + return true; +} - return FALSE; - } +wxBorder wxToggleButton::GetDefaultBorder() const +{ + return wxBORDER_NONE; +} - // Subclass again for purposes of dialog editing mode - SubclassWin(m_hWnd); +WXDWORD wxToggleButton::MSWGetStyle(long style, WXDWORD *exstyle) const +{ + WXDWORD msStyle = wxControl::MSWGetStyle(style, exstyle); - SetFont(parent->GetFont()); +#ifndef BS_PUSHLIKE +#define BS_PUSHLIKE 0x00001000L +#endif - SetSize(pos.x, pos.y, size.x, size.y); + msStyle |= BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP; - return TRUE; -} + if(style & wxBU_LEFT) + msStyle |= BS_LEFT; + if(style & wxBU_RIGHT) + msStyle |= BS_RIGHT; + if(style & wxBU_TOP) + msStyle |= BS_TOP; + if(style & wxBU_BOTTOM) + msStyle |= BS_BOTTOM; -void wxToggleButton::SetLabel(const wxString& label) -{ - SetWindowText(GetHwnd(), label); + return msStyle; } wxSize wxToggleButton::DoGetBestSize() const { wxString label = wxGetWindowText(GetHWND()); int wBtn; - GetTextExtent(label, &wBtn, NULL); + GetTextExtent(wxStripMenuCodes(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; @@ -137,18 +125,23 @@ wxSize wxToggleButton::DoGetBestSize() const // the button height is proportional to the height of the font used int hBtn = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(hChar); +#if wxUSE_BUTTON wxSize sz = wxButton::GetDefaultSize(); if (wBtn > sz.x) sz.x = wBtn; if (hBtn > sz.y) sz.y = hBtn; +#else + wxSize sz(wBtn, hBtn); +#endif + CacheBestSize(sz); return sz; } void wxToggleButton::SetValue(bool val) { - SendMessage(GetHwnd(), BM_SETCHECK, val, 0); + ::SendMessage(GetHwnd(), BM_SETCHECK, val, 0); } #ifndef BST_CHECKED @@ -158,9 +151,9 @@ void wxToggleButton::SetValue(bool val) 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 } @@ -171,4 +164,3 @@ void wxToggleButton::Command(wxCommandEvent & event) } #endif // wxUSE_TOGGLEBTN -