]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/minifram.cpp
1. fixed wxStaticBox background erasing (or, rather, restored the old bug)
[wxWidgets.git] / src / msw / minifram.cpp
index ca7b86bea6338e780c527666198a3402399046ab..57464f4e1882588a55aa476854ac84d6b78a9a1b 100644 (file)
 #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
 
-#if USE_ITSY_BITSY
+
+#ifdef __WIN32__
+
+#include "wx/minifram.h"
+
+#if !USE_SHARED_LIBRARY
+IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame, wxFrame)
+#endif
+
+
+#else
+
+
+#if wxUSE_ITSY_BITSY
 
 #include "wx/minifram.h"
-#include "wx/msw/private.h"
 
+#ifndef __TWIN32__
 #ifdef __GNUWIN32__
+#ifndef wxUSE_NORLANDER_HEADERS
 #include "wx/msw/gnuwin32/extra.h"
 #endif
+#endif
+#endif
 
 #if !USE_SHARED_LIBRARY
 IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame, wxFrame)
@@ -45,7 +65,7 @@ long wxMiniFrame::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam
       (GetWindowStyleFlag() & wxTINY_CAPTION_VERT))
     return ::ibDefWindowProc((HWND) GetHWND(), nMsg, wParam, lParam);
   else if ( m_oldWndProc )
-       return ::CallWindowProc(CASTWNDPROC (FARPROC) m_oldWndProc, (HWND) GetHWND(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam);
+       return ::CallWindowProc(CASTWNDPROC m_oldWndProc, (HWND) GetHWND(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam);
   else
        return ::DefWindowProc((HWND) GetHWND(), nMsg, wParam, lParam);
 }
@@ -83,12 +103,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 +181,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:
@@ -177,14 +197,14 @@ wxMiniFrame::~wxMiniFrame(void)
 //    Unfortunately there is a bug in the Windows 3.0 8514 driver
 //    in using ExtTextOut() to a memory DC.  If you are drawing
 //    to an off screen bitmap, then blitting that bitmap to the
-//    display, do not #define USE_EXTTEXTOUT below.
+//    display, do not #define wxUSE_EXTTEXTOUT below.
 //
 //    The following macro (DRAWFASTRECT) draws a filled rectangle
 //    with no border and a solid color.  It uses the current back-
 //    ground color as the fill color.
 //////////////////////////////////////////////////////////////////////
-#define USE_EXTTEXTOUT
-#ifdef USE_EXTTEXTOUT
+#define wxUSE_EXTTEXTOUT
+#ifdef wxUSE_EXTTEXTOUT
    #define DRAWFASTRECT(hdc,lprc) ExtTextOut(hdc,0,0,ETO_OPAQUE,lprc,NULL,0,NULL)
 #else
    #define DRAWFASTRECT(hdc,lprc) {\
@@ -376,12 +396,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 ) ;
@@ -841,13 +868,13 @@ BOOL PASCAL DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc,
     DRAWFASTRECT( hDC, &rc ) ;
 
     hbrCaption = CreateSolidBrush( rgbCaptionBG ) ;
-    hbrCaption = SelectObject( hDC, hbrCaption ) ;
-    SelectObject( hDC, GetStockObject( NULL_PEN ) ) ;
+    hbrCaption = (HBRUSH) SelectObject( hDC, hbrCaption ) ;
+    SelectObject( hDC, (HPEN) GetStockObject( NULL_PEN ) ) ;
     if (fVert)
         Rectangle( hDC, rcCap.left, rcCap.top, rcCap.right, rcCap.bottom + 1 ) ;
     else
         Rectangle( hDC, rcCap.left, rcCap.top, rcCap.right+1, rcCap.bottom ) ;
-    hbrCaption = SelectObject( hDC, hbrCaption ) ;
+    hbrCaption = (HBRUSH) SelectObject( hDC, hbrCaption ) ;
     DeleteObject( hbrCaption ) ;
 
     
@@ -858,14 +885,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 +916,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 ;
 
@@ -901,7 +929,7 @@ BOOL PASCAL DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc,
                 lf.lfOrientation = 900 ;
                 
                 hFont = CreateFontIndirect( &lf ) ;
-                hFont = SelectObject( hDC, hFont ) ;
+                hFont = (HFONT) SelectObject( hDC, hFont ) ;
                 
                 GetTextExtentPoint( hDC, lpsz, ui, &Size ) ;
                 cx = rcCap.bottom - ((rcCap.bottom - rcCap.top - Size.cx) / 2) ;
@@ -920,7 +948,7 @@ BOOL PASCAL DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc,
                                lpsz, ui, NULL ) ;
                 }
                 
-                hFont = SelectObject( hDC, hFont ) ;
+                hFont = (HFONT) SelectObject( hDC, hFont ) ;
                 DeleteObject( hFont ) ;
             }
             else
@@ -931,7 +959,7 @@ BOOL PASCAL DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc,
                 lf.lfPitchAndFamily = FF_SWISS ;
                 
                 hFont = CreateFontIndirect( &lf ) ;
-                hFont = SelectObject( hDC, hFont ) ;
+                hFont = (HFONT) SelectObject( hDC, hFont ) ;
                 
                 GetTextExtentPoint( hDC, lpsz, ui, &Size ) ;
                 cx = rcCap.left + ((rcCap.right - rcCap.left - Size.cx) / 2) ;
@@ -945,7 +973,7 @@ BOOL PASCAL DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc,
                             ETO_CLIPPED, &rcCap,
                             lpsz, ui, NULL ) ;
                 
-                hFont = SelectObject( hDC, hFont ) ;
+                hFont = (HFONT) SelectObject( hDC, hFont ) ;
                 DeleteObject( hFont ) ;
             }
 
@@ -954,7 +982,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 +1106,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
         //
@@ -1589,4 +1622,6 @@ void PASCAL DrawArrow( HDC hdc, LPRECT lprc, UINT uiStyle )
 
 }  // DrawArrow()   
 
-#endif // USE_ITSY_BITSY
+#endif // wxUSE_ITSY_BITSY
+
+#endif // __WIN32__