]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/tbarmsw.cpp
Copied gsockmsw.c revision 1.20
[wxWidgets.git] / src / msw / tbarmsw.cpp
index 50410b00f8f93d54c3c87b174fa814f49efd90b1..f558a94b804fff348fb20dbfdb8321d66ec71637 100644 (file)
@@ -5,8 +5,8 @@
 // Modified by: 13.12.99 by VZ during toolbar classes reorganization
 // 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 "tbarmsw.h"
 #endif
 
     #include "wx/wx.h"
 #endif
 
-#if wxUSE_BUTTONBAR && wxUSE_TOOLBAR && !wxUSE_TOOLBAR_SIMPLE
-
-#if !defined(__WIN32__) && !wxUSE_IMAGE_LOADING_IN_MSW
-    #error wxToolBar needs wxUSE_IMAGE_LOADING_IN_MSW under Win16
-#endif
+#if wxUSE_TOOLBAR && defined(__WIN16__)
 
 #if !defined(__GNUWIN32__) && !defined(__SALFORDC__)
     #include "malloc.h"
@@ -48,7 +44,7 @@
 
 #include <stdlib.h>
 
-#include "wx/tbarmsw.h"
+#include "wx/msw/tbarmsw.h"
 #include "wx/event.h"
 #include "wx/app.h"
 #include "wx/bitmap.h"
@@ -83,14 +79,14 @@ class WXDLLEXPORT wxToolBarTool : public wxToolBarToolBase
 public:
     wxToolBarTool(wxToolBar *tbar,
                   int id,
-                  const wxBitmap& bitmap1,
-                  const wxBitmap& bitmap2,
+                  const wxBitmap& bmpNormal,
+                  const wxBitmap& bmpDisabled,
                   bool toggle,
                   wxObject *clientData,
-                  const wxString& shortHelpString,
-                  const wxString& longHelpString)
-        : wxToolBarToolBase(tbar, id, bitmap1, bitmap2, toggle,
-                            clientData, shortHelpString, longHelpString)
+                  const wxString& shortHelp,
+                  const wxString& longHelp)
+        : wxToolBarToolBase(tbar, id, bmpNormal, bmpDisabled, toggle,
+                            clientData, shortHelp, longHelp)
     {
     }
 
@@ -119,7 +115,7 @@ public:
 // ----------------------------------------------------------------------------
 
 #if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase)
 
 BEGIN_EVENT_TABLE(wxToolBar, wxToolBarBase)
        EVT_PAINT(wxToolBar::OnPaint)
@@ -136,15 +132,16 @@ END_EVENT_TABLE()
 // ----------------------------------------------------------------------------
 
 wxToolBarToolBase *wxToolBar::CreateTool(int id,
-                                         const wxBitmap& bitmap1,
-                                         const wxBitmap& bitmap2,
-                                         bool toggle,
+                                         const wxString& label,
+                                         const wxBitmap& bmpNormal,
+                                         const wxBitmap& bmpDisabled,
+                                         wxItemKind kind,
                                          wxObject *clientData,
-                                         const wxString& shortHelpString,
-                                         const wxString& longHelpString)
+                                         const wxString& shortHelp,
+                                         const wxString& longHelp)
 {
-    return new wxToolBarTool(this, id, bitmap1, bitmap2, toggle,
-                             clientData, shortHelpString, longHelpString);
+    return new wxToolBarTool(this, id, label, bmpNormal, bmpDisabled, kind,
+                             clientData, shortHelp, longHelp);
 }
 
 wxToolBarToolBase *wxToolBar::CreateTool(wxControl *control)
@@ -490,8 +487,8 @@ bool wxToolBar::DoInsertTool(size_t pos, wxToolBarToolBase *toolBase)
 
     // TODO: use the mapping code from wxToolBar95 to get it right in this class
 #if !defined(__WIN32__) && !defined(__WIN386__)
-    wxBitmap bitmap2;
-    if (toggle)
+    wxBitmap bmpDisabled;
+    if (tool->CanBeToggled())
     {
         HBITMAP hbmp = CreateMappedBitmap((WXHINSTANCE)wxGetInstance(),
                                           GetHbitmapOf(tool->GetBitmap1()));
@@ -784,7 +781,7 @@ void wxToolBar::DrawButton(WXHDC hdc, int x, int y, int dx, int dy,
     dxFace -= 3;               
     dyFace -= 3;
 
-    // Using bitmap2 can cause problems (don't know why!)
+    // Using bmpDisabled can cause problems (don't know why!)
 #if !defined(__WIN32__) && !defined(__WIN386__)
     HBITMAP bitmapOld;
     if (tool->GetBitmap2().Ok())
@@ -1102,20 +1099,16 @@ WXHBITMAP wxToolBar::CreateMappedBitmap(WXHINSTANCE WXUNUSED(hInstance), void *i
 
 WXHBITMAP wxToolBar::CreateMappedBitmap(WXHINSTANCE hInstance, WXHBITMAP hBitmap)
 {
-  HANDLE hDIB = wxBitmapToDIB((HBITMAP) hBitmap, 0);
-  if (hDIB)
-  {
-#ifdef __WINDOWS_386__
-    LPBITMAPINFOHEADER lpbmInfoHdr = (LPBITMAPINFOHEADER)MK_FP32(GlobalLock(hDIB));
-#else
-    LPBITMAPINFOHEADER lpbmInfoHdr = (LPBITMAPINFOHEADER)GlobalLock(hDIB);
-#endif
-    HBITMAP newBitmap = (HBITMAP) CreateMappedBitmap((WXHINSTANCE) wxGetInstance(), lpbmInfoHdr);
-    GlobalUnlock(hDIB);
+    HANDLE hDIB = wxDIB::ConvertFromBitmap((HBITMAP) hBitmap);
+    if ( !hDIB )
+        return 0;
+
+    WXHBITMAP newBitmap = CreateMappedBitmap(hInstance, GlobalPtr(hDIB));
+
     GlobalFree(hDIB);
-    return (WXHBITMAP) newBitmap;
-  }
-  return 0;
+
+    return newBitmap;
 }
 
-#endif
+#endif // wxUSE_TOOLBAR
+