]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/nativdlg.cpp
Don't use DDEExec registry key in wxMSW wxExecute() if it's empty.
[wxWidgets.git] / src / msw / nativdlg.cpp
index 9c8c53505cb4a62ab78781064cac64ba4fceade6..d71c3b13e4b7d935c8a48b5d34a2c1fd3115f700 100644 (file)
@@ -1,10 +1,9 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        nativdlg.cpp
+// Name:        src/msw/nativdlg.cpp
 // Purpose:     Native dialog loading code (part of wxWindow)
 // Author:      Julian Smart
 // Modified by:
 // Created:     04/01/98
-// RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // headers
 // ---------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -34,9 +29,7 @@
     #include "wx/wx.h"
 #endif
 
-#if defined(__WIN95__)
 #include "wx/spinbutt.h"
-#endif
 #include "wx/msw/private.h"
 
 // ---------------------------------------------------------------------------
@@ -61,7 +54,7 @@ bool wxWindow::LoadNativeDialog(wxWindow* parent, wxWindowID& id)
                                     (DLGPROC) wxDlgProc);
 
     if ( !m_hWnd )
-        return FALSE;
+        return false;
 
     SubclassWin(GetHWND());
 
@@ -84,7 +77,7 @@ bool wxWindow::LoadNativeDialog(wxWindow* parent, wxWindowID& id)
             CreateWindowFromHWND(this, (WXHWND) hWndNext);
     }
 
-    return TRUE;
+    return true;
 }
 
 bool wxWindow::LoadNativeDialog(wxWindow* parent, const wxString& name)
@@ -98,7 +91,7 @@ bool wxWindow::LoadNativeDialog(wxWindow* parent, const wxString& name)
                                     (DLGPROC)wxDlgProc);
 
     if ( !m_hWnd )
-        return FALSE;
+        return false;
 
     SubclassWin(GetHWND());
 
@@ -121,7 +114,7 @@ bool wxWindow::LoadNativeDialog(wxWindow* parent, const wxString& name)
             CreateWindowFromHWND(this, (WXHWND) hWndNext);
     }
 
-    return TRUE;
+    return true;
 }
 
 // ---------------------------------------------------------------------------
@@ -152,20 +145,14 @@ wxWindow* wxWindow::GetWindowChild(wxWindowID id)
     wxWindow* win = GetWindowChild1(id);
     if ( !win )
     {
-        HWND hWnd = ::GetDlgItem((HWND) GetHWND(), id);
-
-        if (hWnd)
+        HWND hwnd = ::GetDlgItem(GetHwnd(), id);
+        if ( hwnd )
         {
-            wxWindow* child = CreateWindowFromHWND(this, (WXHWND) hWnd);
-            if (child)
-            {
-                child->AddChild(this);
-                return child;
-            }
+            win = CreateWindowFromHWND(this, (WXHWND) hwnd);
         }
     }
 
-    return NULL;
+    return win;
 }
 
 // ---------------------------------------------------------------------------
@@ -174,6 +161,8 @@ wxWindow* wxWindow::GetWindowChild(wxWindowID id)
 
 wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd)
 {
+    wxCHECK_MSG( parent, NULL, wxT("must have valid parent for a control") );
+
     wxString str(wxGetWindowClass(hWnd));
     str.UpperCase();
 
@@ -185,25 +174,32 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd)
     if (str == wxT("BUTTON"))
     {
         int style1 = (style & 0xFF);
+#if wxUSE_CHECKBOX
         if ((style1 == BS_3STATE) || (style1 == BS_AUTO3STATE) || (style1 == BS_AUTOCHECKBOX) ||
             (style1 == BS_CHECKBOX))
         {
             win = new wxCheckBox;
         }
-        else if ((style1 == BS_AUTORADIOBUTTON) || (style1 == BS_RADIOBUTTON))
+        else
+#endif
+#if wxUSE_RADIOBTN
+        if ((style1 == BS_AUTORADIOBUTTON) || (style1 == BS_RADIOBUTTON))
         {
             win = new wxRadioButton;
         }
+        else
+#endif
 #if wxUSE_BMPBUTTON
 #if defined(__WIN32__) && defined(BS_BITMAP)
-        else if (style & BS_BITMAP)
+        if (style & BS_BITMAP)
         {
             // TODO: how to find the bitmap?
             win = new wxBitmapButton;
             wxLogError(wxT("Have not yet implemented bitmap button as BS_BITMAP button."));
         }
+        else
 #endif
-        else if (style1 == BS_OWNERDRAW)
+        if (style1 == BS_OWNERDRAW)
         {
             // TODO: how to find the bitmap?
             // TODO: can't distinguish between bitmap button and bitmap static.
@@ -213,25 +209,34 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd)
             // with a switch in the drawing code. Call default proc if BS_BITMAP.
             win = new wxBitmapButton;
         }
+        else
 #endif
-        else if ((style1 == BS_PUSHBUTTON) || (style1 == BS_DEFPUSHBUTTON))
+#if wxUSE_BUTTON
+        if ((style1 == BS_PUSHBUTTON) || (style1 == BS_DEFPUSHBUTTON))
         {
             win = new wxButton;
         }
-        else if (style1 == BS_GROUPBOX)
+        else
+#endif
+#if wxUSE_STATBOX
+        if (style1 == BS_GROUPBOX)
         {
             win = new wxStaticBox;
         }
         else
+#endif
         {
             wxLogError(wxT("Don't know what kind of button this is: id = %ld"),
                        id);
         }
     }
+#if wxUSE_COMBOBOX
     else if (str == wxT("COMBOBOX"))
     {
         win = new wxComboBox;
     }
+#endif
+#if wxUSE_TEXTCTRL
     // TODO: Problem if the user creates a multiline - but not rich text - text control,
     // since wxWin assumes RichEdit control for this. Should have m_isRichText in
     // wxTextCtrl. Also, convert as much of the window style as is necessary
@@ -242,15 +247,20 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd)
     {
         win = new wxTextCtrl;
     }
+#endif
+#if wxUSE_LISTBOX
     else if (str == wxT("LISTBOX"))
     {
         win = new wxListBox;
     }
+#endif
+#if wxUSE_SCROLLBAR
     else if (str == wxT("SCROLLBAR"))
     {
         win = new wxScrollBar;
     }
-#if defined(__WIN95__) && wxUSE_SPINBTN
+#endif
+#if wxUSE_SPINBTN
     else if (str == wxT("MSCTLS_UPDOWN32"))
     {
         win = new wxSpinButton;
@@ -263,6 +273,7 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd)
         win = new wxSlider;
     }
 #endif // wxUSE_SLIDER
+#if wxUSE_STATTEXT
     else if (str == wxT("STATIC"))
     {
         int style1 = (style & 0xFF);
@@ -283,8 +294,9 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd)
             wxLogError(wxT("Please make SS_BITMAP statics into owner-draw buttons."));
         }
 #endif
-#endif /* wxUSE_STATBMP */
+#endif /* wxUSE_STATBMP */
     }
+#endif
     else
     {
         wxString msg(wxT("Don't know how to convert from Windows class "));
@@ -295,9 +307,6 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd)
     if (win)
     {
         parent->AddChild(win);
-        win->SetEventHandler(win);
-        win->SetHWND(hWnd);
-        win->SetId(id);
         win->SubclassWin(hWnd);
         win->AdoptAttributesFromHWND();
         win->SetupColours();
@@ -307,14 +316,14 @@ wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd)
 }
 
 // Make sure the window style (etc.) reflects the HWND style (roughly)
-void wxWindow::AdoptAttributesFromHWND(void)
+void wxWindow::AdoptAttributesFromHWND()
 {
-    HWND hWnd = (HWND) GetHWND();
-    long style = GetWindowLong((HWND) hWnd, GWL_STYLE);
+    SetId(wxGetWindowId(m_hWnd));
+
+    long style = GetWindowLong(GetHwnd(), GWL_STYLE);
 
     if (style & WS_VSCROLL)
         m_windowStyle |= wxVSCROLL;
     if (style & WS_HSCROLL)
         m_windowStyle |= wxHSCROLL;
 }
-