#include <stdio.h>
#endif
-#define DEBUG_PRINTF(NAME) { static int raz=0; \
- printf( #NAME " %i\n",raz); fflush(stdout); \
- raz++; \
- }
-
#if wxUSE_OWNER_DRAWN
#include "wx/ownerdrw.h"
#endif
, WXWORD WXUNUSED(uId)
)
{
-
-DEBUG_PRINTF(wxWindow::OS2Command);
-
return(FALSE);
}
m_lLastMouseY = -1;
m_nLastMouseEvent = -1;
#endif // wxUSE_MOUSEEVENT_HACK
-
-DEBUG_PRINTF(wxWindow::Init-End);
-
} // wxWindow::Init
//
//
wxWindow::~wxWindow()
{
-DEBUG_PRINTF(wxWindow::~wxWindow-Start);
m_isBeingDeleted = TRUE;
OS2DetachWindowMenu();
//
wxRemoveHandleAssociation(this);
}
-DEBUG_PRINTF(wxWindow::~wxWindow-End);
} // end of wxWindow::~wxWindow
bool wxWindow::Create(
const wxFont& rFont
)
{
-DEBUG_PRINTF(wxWindow::SetFont);
if (!wxWindowBase::SetFont(rFont))
{
// nothing to do
hPs = ::WinGetPS(GetHwnd());
if(!GpiQueryFontMetrics(hPs, sizeof(FONTMETRICS), &vFontMetrics))
+ {
+ ::WinReleasePS(hPs);
return (0);
- else
- return(vFontMetrics.lMaxAscender + vFontMetrics.lMaxDescender);
+ }
::WinReleasePS(hPs);
+ return(vFontMetrics.lMaxAscender + vFontMetrics.lMaxDescender);
} // end of wxWindow::GetCharHeight
int wxWindow::GetCharWidth() const
hPs = ::WinGetPS(GetHwnd());
if(!GpiQueryFontMetrics(hPs, sizeof(FONTMETRICS), &vFontMetrics))
+ {
+ ::WinReleasePS(hPs);
return (0);
- else
- return(vFontMetrics.lAveCharWidth);
+ }
::WinReleasePS(hPs);
+ return(vFontMetrics.lAveCharWidth);
} // end of wxWindow::GetCharWidth
void wxWindow::GetTextExtent(
, WXLPARAM lParam
)
{
-DEBUG_PRINTF(wxWindow::OS2DefWindowProc);
-
if (m_fnOldWndProc)
return (MRESULT)m_fnOldWndProc(GetHWND(), (ULONG)uMsg, (MPARAM)wParam, (MPARAM)lParam);
else
// Trace all ulMsgs - useful for the debugging
//
#ifdef __WXDEBUG__
-DEBUG_PRINTF(__WXDEBUG__wxWndProc);
wxLogTrace(wxTraceMessages, wxT("Processing %s(wParam=%8lx, lParam=%8lx)"),
wxGetMessageName(ulMsg), wParam, lParam);
#endif // __WXDEBUG__
break;
case WM_PAINT:
-DEBUG_PRINTF(WM_PAINT)
bProcessed = HandlePaint();
break;
//
bProcessed = TRUE;
mResult = (MRESULT)TRUE;
-DEBUG_PRINTF(WM_CLOSE)
break;
case WM_SHOW:
-DEBUG_PRINTF(WM_SHOW)
bProcessed = HandleShow(wParam != 0, (int)lParam);
break;
{
WORD id, cmd;
WXHWND hwnd;
-DEBUG_PRINTF(WM_COMMAND-in)
UnpackCommand(wParam, lParam, &id, &hwnd, &cmd);
bProcessed = HandleCommand(id, cmd, hwnd);
-DEBUG_PRINTF(WM_COMMAND-out)
}
break;
}
break;
#endif
+ case WM_ERASEBACKGROUND:
+ //
+ // Returning TRUE to requestw PM to paint the window background
+ // in SYSCLR_WINDOW. We don't really want that
+ //
+ bProcessed = HandleEraseBkgnd((WXHDC)(HPS)wParam);
+ mResult = (MRESULT)(FALSE);
+ break;
+
//
// Instead of CTLCOLOR messages PM sends QUERYWINDOWPARAMS to
// things such as colors and fonts and such
bProcessed = HandlePresParamChanged(wParam);
break;
- // move this to wxFrame
- case WM_ERASEBACKGROUND:
- bProcessed = HandleEraseBkgnd((WXHDC)(HDC)wParam);
- if (bProcessed)
- {
- //
- // We processed the message, i.e. erased the background
- //
- mResult = (MRESULT)TRUE;
- }
- break;
// move all drag and drops to wxDrg
case WM_ENDDRAG:
}
break;
}
-
if (!bProcessed)
{
#ifdef __WXDEBUG__
wxLogTrace(wxTraceMessages, wxT("Forwarding %s to DefWindowProc."),
wxGetMessageName(uMsg));
#endif // __WXDEBUG__
- mResult = OS2DefWindowProc(uMsg, wParam, lParam);
+ if (IsKindOf(CLASSINFO(wxFrame)))
+ mResult = ::WinDefWindowProc(m_hWnd, uMsg, wParam, lParam);
+ else
+ mResult = OS2DefWindowProc(uMsg, wParam, lParam);
}
return mResult;
} // end of wxWindow::OS2WindowProc
wxLogLastError("CreateRectRgn");
return FALSE;
}
- //
- // Debug code
- //
-#ifdef __WXDEBUG__
- {
- HWND hWnd;
- HWND hWnd0 = NULLHANDLE;
-
- hWnd = GetHwnd();
- if(hWnd != hWnd0)
- printf("HandlePaint hWnd=%x ",hWnd);
- }
-#endif
m_updateRegion = wxRegion(hRgn);
vEvent.SetEventObject(this);
return (GetEventHandler()->ProcessEvent(vEvent));
} // end of wxWindow::HandlePaint
-bool wxWindow::HandleEraseBkgnd(WXHDC hdc)
+bool wxWindow::HandleEraseBkgnd(
+ WXHDC hDC
+)
{
- // TODO: will have to worry about this later as part of
- // the handling of changed presentation parameters
- /*
- if ( ::IsIconic(GetHwnd()) )
+ SWP vSwp;
+
+ ::WinQueryWindowPos(GetHwnd(), &vSwp);
+ if (vSwp.fl & SWP_MINIMIZE)
return TRUE;
- wxDC dc;
+ wxDC vDC;
+
+ vDC.m_hPS = (HPS)hDC; // this is really a PS
+ vDC.SetWindow(this);
+ vDC.BeginDrawing();
- dc.SetHDC(hdc);
- dc.SetWindow(this);
- dc.BeginDrawing();
+ wxEraseEvent vEvent(m_windowId, &vDC);
- wxEraseEvent event(m_windowId, &dc);
- event.SetEventObject(this);
- bool rc = GetEventHandler()->ProcessEvent(event);
+ vEvent.SetEventObject(this);
+
+ bool rc = GetEventHandler()->ProcessEvent(vEvent);
- dc.EndDrawing();
- dc.SelectOldObjects(hdc);
- dc.SetHDC((WXHDC) NULL);
- */
+ vDC.EndDrawing();
+ vDC.m_hPS = NULLHANDLE;
return TRUE;
} // end of wxWindow::HandleEraseBkgnd
wxEraseEvent& rEvent
)
{
- // TODO:
+ RECTL vRect;
+ HPS hPS = rEvent.m_dc->m_hPS;
+
+ ::WinQueryWindowRect(GetHwnd(), &vRect);
+ ::WinFillRect(hPS, &vRect, m_backgroundColour.GetPixel());
} // end of wxWindow::OnEraseBackground
// ---------------------------------------------------------------------------