X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3ca6a5f04692678cd2d9f3ea0843fc3f5a0b254f..b7ceceb1861d7583c0a544c608fcf583367e6e92:/src/msw/nativdlg.cpp?ds=sidebyside diff --git a/src/msw/nativdlg.cpp b/src/msw/nativdlg.cpp index 5eef575db7..9c8c53505c 100644 --- a/src/msw/nativdlg.cpp +++ b/src/msw/nativdlg.cpp @@ -5,8 +5,8 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // =========================================================================== @@ -17,7 +17,7 @@ // headers // --------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation #endif @@ -34,7 +34,7 @@ #include "wx/wx.h" #endif -#if defined(__WIN95__) && !defined(__TWIN32__) +#if defined(__WIN95__) #include "wx/spinbutt.h" #endif #include "wx/msw/private.h" @@ -43,7 +43,6 @@ // global functions // --------------------------------------------------------------------------- -extern wxWindow *wxWndHook; extern LONG APIENTRY _EXPORT wxDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); @@ -54,12 +53,12 @@ extern LONG APIENTRY _EXPORT wxDlgProc(HWND hWnd, UINT message, bool wxWindow::LoadNativeDialog(wxWindow* parent, wxWindowID& id) { m_windowId = id; - wxWndHook = this; + + wxWindowCreationHook hook(this); m_hWnd = (WXHWND)::CreateDialog((HINSTANCE)wxGetInstance(), MAKEINTRESOURCE(id), parent ? (HWND)parent->GetHWND() : 0, (DLGPROC) wxDlgProc); - wxWndHook = NULL; if ( !m_hWnd ) return FALSE; @@ -75,15 +74,14 @@ bool wxWindow::LoadNativeDialog(wxWindow* parent, wxWindowID& id) HWND hWndNext; hWndNext = ::GetWindow((HWND) m_hWnd, GW_CHILD); - wxWindow* child = NULL; if (hWndNext) - child = CreateWindowFromHWND(this, (WXHWND) hWndNext); + CreateWindowFromHWND(this, (WXHWND) hWndNext); while (hWndNext != (HWND) NULL) { hWndNext = ::GetWindow(hWndNext, GW_HWNDNEXT); if (hWndNext) - child = CreateWindowFromHWND(this, (WXHWND) hWndNext); + CreateWindowFromHWND(this, (WXHWND) hWndNext); } return TRUE; @@ -93,12 +91,11 @@ bool wxWindow::LoadNativeDialog(wxWindow* parent, const wxString& name) { SetName(name); - wxWndHook = this; + wxWindowCreationHook hook(this); m_hWnd = (WXHWND)::CreateDialog((HINSTANCE) wxGetInstance(), name.c_str(), parent ? (HWND)parent->GetHWND() : 0, (DLGPROC)wxDlgProc); - wxWndHook = NULL; if ( !m_hWnd ) return FALSE; @@ -110,7 +107,19 @@ bool wxWindow::LoadNativeDialog(wxWindow* parent, const wxString& name) else wxTopLevelWindows.Append(this); - // FIXME why don't we enum all children here? + // Enumerate all children + HWND hWndNext; + hWndNext = ::GetWindow((HWND) m_hWnd, GW_CHILD); + + if (hWndNext) + CreateWindowFromHWND(this, (WXHWND) hWndNext); + + while (hWndNext != (HWND) NULL) + { + hWndNext = ::GetWindow(hWndNext, GW_HWNDNEXT); + if (hWndNext) + CreateWindowFromHWND(this, (WXHWND) hWndNext); + } return TRUE; } @@ -124,7 +133,7 @@ wxWindow* wxWindow::GetWindowChild1(wxWindowID id) if ( m_windowId == id ) return this; - wxWindowList::Node *node = GetChildren().GetFirst(); + wxWindowList::compatibility_iterator node = GetChildren().GetFirst(); while ( node ) { wxWindow* child = node->GetData(); @@ -185,6 +194,7 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd) { win = new wxRadioButton; } +#if wxUSE_BMPBUTTON #if defined(__WIN32__) && defined(BS_BITMAP) else if (style & BS_BITMAP) { @@ -203,6 +213,7 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd) // with a switch in the drawing code. Call default proc if BS_BITMAP. win = new wxBitmapButton; } +#endif else if ((style1 == BS_PUSHBUTTON) || (style1 == BS_DEFPUSHBUTTON)) { win = new wxButton; @@ -213,7 +224,7 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd) } else { - wxLogError(wxT("Don't know what kind of button this is: id = %d"), + wxLogError(wxT("Don't know what kind of button this is: id = %ld"), id); } } @@ -239,23 +250,30 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd) { win = new wxScrollBar; } -#if defined(__WIN95__) && !defined(__TWIN32__) && wxUSE_SPINBTN +#if defined(__WIN95__) && wxUSE_SPINBTN else if (str == wxT("MSCTLS_UPDOWN32")) { win = new wxSpinButton; } #endif +#if wxUSE_SLIDER else if (str == wxT("MSCTLS_TRACKBAR32")) { // Need to ascertain if it's horiz or vert win = new wxSlider; } +#endif // wxUSE_SLIDER else if (str == wxT("STATIC")) { int style1 = (style & 0xFF); - if ((style1 == SS_LEFT) || (style1 == SS_RIGHT) || (style1 == SS_SIMPLE)) + if ((style1 == SS_LEFT) || (style1 == SS_RIGHT) +#ifndef __WXWINCE__ + || (style1 == SS_SIMPLE) +#endif + ) win = new wxStaticText; +#if wxUSE_STATBMP #if defined(__WIN32__) && defined(BS_BITMAP) else if (style1 == SS_BITMAP) { @@ -265,6 +283,7 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd) wxLogError(wxT("Please make SS_BITMAP statics into owner-draw buttons.")); } #endif +#endif /* wxUSE_STATBMP */ } else {