X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/edccf4281bc8fbb9d8151240ba5b208339c9ac11..b2a9d5b418571c804c6ed701886113522878b287:/src/msw/control.cpp diff --git a/src/msw/control.cpp b/src/msw/control.cpp index 7f609f7bd6..3ae9f711d2 100644 --- a/src/msw/control.cpp +++ b/src/msw/control.cpp @@ -30,7 +30,7 @@ #include "wx/msw/private.h" -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) +#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) || defined(wxUSE_NORLANDER_HEADERS) #include #endif @@ -58,6 +58,44 @@ wxControl::~wxControl() m_isBeingDeleted = TRUE; } +bool wxControl::MSWCreateControl(const wxChar *classname, WXDWORD style) +{ + m_hWnd = (WXHWND)::CreateWindowEx + ( + GetExStyle(style), // extended style + classname, // the kind of control to create + NULL, // the window name + style, // the window style + 0, 0, 0, 0, // the window position and size + GetHwndOf(GetParent()), // parent + (HMENU)GetId(), // child id + wxGetInstance(), // app instance + NULL // creation parameters + ); + + if ( !m_hWnd ) + { +#ifdef __WXDEBUG__ + wxLogError(_T("Failed to create a control of class '%s'"), classname); +#endif // DEBUG + + return FALSE; + } + + // subclass again for purposes of dialog editing mode + SubclassWin(m_hWnd); + + // controls use the same font and colours as their parent dialog by default + InheritAttributes(); + + return TRUE; +} + +wxSize wxControl::DoGetBestSize() +{ + return wxSize(DEFAULT_ITEM_WIDTH, DEFAULT_ITEM_HEIGHT); +} + bool wxControl::ProcessCommand(wxCommandEvent& event) { #if WXWIN_COMPATIBILITY @@ -142,6 +180,19 @@ void wxControl::OnEraseBackground(wxEraseEvent& event) ::SetMapMode((HDC) event.GetDC()->GetHDC(), mode); } +WXDWORD wxControl::GetExStyle(WXDWORD& style) const +{ + bool want3D; + WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; + + // Even with extended styles, need to combine with WS_BORDER + // for them to look right. + if ( want3D || wxStyleHasBorder(m_windowStyle) ) + style |= WS_BORDER; + + return exStyle; +} + // --------------------------------------------------------------------------- // global functions // ---------------------------------------------------------------------------