]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/statbmp.cpp
Add missing WXK constants for the control keys
[wxWidgets.git] / src / os2 / statbmp.cpp
index 47a890f2ae6c1ca5cdd8efd7b88cbcb42da15094..9a7f0985a39cc2601005a0ae7aa8877d58c3c153 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        statbmp.cpp
+// Name:        src/os2/statbmp.cpp
 // Purpose:     wxStaticBitmap
 // Author:      David Webster
 // Modified by:
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
-#include "wx/dcclient.h"
-#include "wx/window.h"
-#include "wx/os2/private.h"
+#include "wx/statbmp.h"
 
 #ifndef WX_PRECOMP
     #include "wx/icon.h"
-    #include "wx/statbmp.h"
+    #include "wx/window.h"
+    #include "wx/dcclient.h"
 #endif
 
+#include "wx/os2/private.h"
+
 #include <stdio.h>
 
 // ---------------------------------------------------------------------------
-// macors
+// macros
 // ---------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl)
-
 BEGIN_EVENT_TABLE(wxStaticBitmap, wxWindow)
     EVT_PAINT(wxStaticBitmap::OnPaint)
 END_EVENT_TABLE()
@@ -42,7 +41,7 @@ static wxGDIImage* ConvertImage(
     if(!bIsIcon )
     {
         wxASSERT_MSG( wxDynamicCast(&rBitmap, wxBitmap),
-                      _T("not an icon and not a bitmap?") );
+                      wxT("not an icon and not a bitmap?") );
 
         const wxBitmap&             rBmp = (const wxBitmap&)rBitmap;
         wxMask*                     pMask = rBmp.GetMask();
@@ -119,9 +118,12 @@ bool wxStaticBitmap::Create( wxWindow*         pParent,
         sError = wxPMErrorToStr(vError);
         return false;
     }
-    wxCHECK_MSG( m_hWnd, FALSE, wxT("Failed to create static bitmap") );
+    wxCHECK_MSG( m_hWnd, false, wxT("Failed to create static bitmap") );
     m_pImage = ConvertImage(rBitmap);
-    m_pImage->SetHandle((WXHWND)::WinSendMsg(m_hWnd, SM_QUERYHANDLE, (MPARAM)0, (MPARAM)0));
+    ::WinSendMsg(   m_hWnd,
+                    SM_SETHANDLE,
+                    MPFROMHWND(rBitmap.GetHandle()),
+                    (MPARAM)0);
 
     // Subclass again for purposes of dialog editing mode
     SubclassWin(m_hWnd);
@@ -132,14 +134,12 @@ bool wxStaticBitmap::Create( wxWindow*         pParent,
 
 bool wxStaticBitmap::ImageIsOk() const
 {
-    return(m_pImage && m_pImage->Ok());
+    return(m_pImage && m_pImage->IsOk());
 }
 
 void wxStaticBitmap::Free()
 {
-    if (m_pImage)
-        delete m_pImage;
-    m_pImage = NULL;
+    wxDELETE(m_pImage);
 } // end of wxStaticBitmap::Free
 
 wxSize wxStaticBitmap::DoGetBestSize() const
@@ -151,12 +151,10 @@ wxSize wxStaticBitmap::DoGetBestSize() const
     return wxWindow::DoGetBestSize();
 }
 
-void wxStaticBitmap::OnPaint (
-  wxPaintEvent&                     WXUNUSED(rEvent)
-)
+void wxStaticBitmap::OnPaint ( wxPaintEvent& WXUNUSED(rEvent) )
 {
-    wxPaintDC                       vDc(this);
-    wxBitmap*                       pBitmap;
+    wxPaintDC vDc(this);
+    wxBitmap* pBitmap;
 
     if (m_pImage->IsKindOf(CLASSINFO(wxIcon)))
     {
@@ -174,14 +172,12 @@ void wxStaticBitmap::OnPaint (
     }
 } // end of wxStaticBitmap::OnPaint
 
-void wxStaticBitmap::SetImage(
-  const wxGDIImage&                 rBitmap
-)
+void wxStaticBitmap::SetImage( const wxGDIImage& rBitmap )
 {
-    int                             nX = 0;
-    int                             nY = 0;
-    int                             nWidth = 0;
-    int                             nHeight = 0;
+    int nX = 0;
+    int nY = 0;
+    int nWidth = 0;
+    int nHeight = 0;
 
     Free();
     ::WinSendMsg( GetHwnd()
@@ -193,13 +189,15 @@ void wxStaticBitmap::SetImage(
 
     GetPosition(&nX, &nY);
     GetSize(&nWidth, &nHeight);
+    // Convert to OS/2 coordinate system
+    nY = wxWindow::GetOS2ParentHeight(GetParent()) - nY - nHeight;
 
     RECTL                           vRect;
 
     vRect.xLeft   = nX;
-    vRect.yTop    = nY;
+    vRect.yTop    = nY + nHeight;
     vRect.xRight  = nX + nWidth;
-    vRect.yBottom = nY + nHeight;
+    vRect.yBottom = nY;
 
     ::WinInvalidateRect(GetHwndOf(GetParent()), &vRect, TRUE);
 }