]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/minifram.cpp
Fixed toolbar crash for MinGW/Cygwin
[wxWidgets.git] / src / msw / minifram.cpp
index c64fdf0e7dcecc99d2f1696725fcd9e4d29fec34..e76e9f15dec0f75f9e7cf2297d7f2f1fad037acb 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     04/01/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart and Markus Holzem
-// Licence:    wxWindows license
+// Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 #pragma hdrstop
 #endif
 
+#include "wx/window.h"
+#include "wx/msw/private.h"
+
 #ifndef WX_PRECOMP
 #include "wx/setup.h"
+#include "wx/event.h"
 #include "wx/app.h"
 #include "wx/utils.h"
 #endif
 
+
+#ifdef __WIN32__
+
+#include "wx/minifram.h"
+
+IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame, wxFrame)
+
+
+#else
+
+
 #if wxUSE_ITSY_BITSY
 
 #include "wx/minifram.h"
-#include "wx/msw/private.h"
 
-#ifdef __GNUWIN32__
-#include "wx/msw/gnuwin32/extra.h"
+#ifndef __TWIN32__
+    #ifdef __GNUWIN32_OLD__
+        #include "wx/msw/gnuwin32/extra.h"
+    #endif
 #endif
 
-#if !USE_SHARED_LIBRARY
 IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame, wxFrame)
-#endif
 
 long wxMiniFrame::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
 {
@@ -83,12 +97,12 @@ wxMiniFrame::~wxMiniFrame(void)
 //
 //////////////////////////////////////////////////////////////////////////
 
-#include <windows.h>
-#include <windowsx.h>
+#include "wx/window.h"
+#include "wx/msw/private.h"
 
 #include <string.h>
 
-#ifndef __WATCOMC__
+#if !defined( __WATCOMC__ ) && !defined( __MWERKS__ ) && !defined(__SALFORDC__)
 #include <memory.h>
 #endif
 
@@ -161,13 +175,13 @@ wxMiniFrame::~wxMiniFrame(void)
 #define HASCAPTION( hwnd )    (TestWinStyle( hwnd, IBS_VERTCAPTION ) ||\
                                TestWinStyle( hwnd, IBS_HORZCAPTION ))
                                
-#define SETCAPTIONSIZE(h,i)   (UINT)SetProp(h,"ibSize",(HANDLE)i)
-#define GETCAPTIONSIZE(h)     (UINT)GetProp(h,"ibSize")
-#define FREECAPTIONSIZE(h)    RemoveProp(h,"ibSize")
+#define SETCAPTIONSIZE(h,i)   (UINT)SetProp(h,wxT("ibSize"),(HANDLE)i)
+#define GETCAPTIONSIZE(h)     (UINT)GetProp(h,wxT("ibSize"))
+#define FREECAPTIONSIZE(h)    RemoveProp(h,wxT("ibSize"))
 
-#define SETMENUWASUPFLAG(h,i) (UINT)SetProp(h,"ibFlag",(HANDLE)i)
-#define GETMENUWASUPFLAG(h)   (UINT)GetProp(h,"ibFlag")
-#define FREEMENUWASUPFLAG(h)  RemoveProp(h,"ibFlag")
+#define SETMENUWASUPFLAG(h,i) (UINT)SetProp(h,wxT("ibFlag"),(HANDLE)i)
+#define GETMENUWASUPFLAG(h)   (UINT)GetProp(h,wxT("ibFlag"))
+#define FREEMENUWASUPFLAG(h)  RemoveProp(h,wxT("ibFlag"))
 
 /////////////////////////////////////////////////////////////////////
 // Little known fact:
@@ -376,12 +390,19 @@ LRESULT WINAPI ibDefWindowProc( HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lPa
                     cx = GetSystemMetrics( SM_CXFRAME ) ;
                     cy = GetSystemMetrics( SM_CYFRAME ) ;
                 }
+                else if (TestWinStyle(hWnd, WS_BORDER ))
+                {
+                    cx = GetSystemMetrics( SM_CXBORDER ) ;
+                    cy = GetSystemMetrics( SM_CYBORDER ) ;
+                }
                 else
-                    if (TestWinStyle(hWnd, WS_BORDER ))
-                    {
-                        cx = GetSystemMetrics( SM_CXBORDER ) ;
-                        cy = GetSystemMetrics( SM_CYBORDER ) ;
-                    }
+                {
+                    // VZ: I don't know what should be here, but the vars must
+                    //     be inited!
+                    wxFAIL_MSG(wxT("don't know how to initialize cx, cy"));
+
+                    cx = cy = 0;
+                }
                                 
                 GetIconRect( hWnd, &rcMenu ) ;
                 GetMinButtonRect( hWnd, &rcMin ) ;
@@ -858,14 +879,15 @@ BOOL PASCAL DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc,
     if (fWin31)
     {
         HFONT          hFont ;
-        LPSTR          lpsz ;
+        LPTSTR         lpsz ;
         LOGFONT        lf ;
         TEXTMETRIC     tm ;
         int            cx ;
         int            cy ;
         SIZE           Size ;
         
-        if ((lpsz = (char*)GlobalAllocPtr( GHND, ui + 2 )))
+        lpsz = (wxChar*)GlobalAllocPtr( GHND, (ui + 2) * sizeof(wxChar) );
+        if (lpsz)
         {
             UINT    nBkMode ;
 
@@ -888,7 +910,7 @@ BOOL PASCAL DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc,
             {
                 // Can only rotate true type fonts (well, ok, we could
                 // try and use "modern").
-                strcpy( lf.lfFaceName, "Arial" ) ;
+                wxStrcpy( lf.lfFaceName, wxT("Arial") ) ;
                 lf.lfPitchAndFamily = FF_SWISS | 0x04;
                 lf.lfEscapement = 900 ;
 
@@ -954,7 +976,11 @@ BOOL PASCAL DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc,
             rgbText = SetTextColor( hDC, rgbText ) ;
             SetBkMode( hDC, nBkMode ) ;
             
+#ifdef __WIN16__
+            GlobalFreePtr( (unsigned int)(DWORD) lpsz ) ;
+#else
             GlobalFreePtr( lpsz ) ;
+#endif
         }
     }
     
@@ -1074,7 +1100,8 @@ BOOL PASCAL DoMenu( HWND hWnd )
     if (!TestWinStyle(hWnd, WS_SYSMENU))
         return FALSE ;
     
-    if ((hDC = GetWindowDC( hWnd )))
+    hDC = GetWindowDC( hWnd );
+    if (hDC)
     {
         // Invert the icon
         //
@@ -1590,3 +1617,5 @@ void PASCAL DrawArrow( HDC hdc, LPRECT lprc, UINT uiStyle )
 }  // DrawArrow()   
 
 #endif // wxUSE_ITSY_BITSY
+
+#endif // __WIN32__