From: David Webster Date: Fri, 1 Sep 2000 13:52:31 +0000 (+0000) Subject: Several updates for fixing the subclassing problems and accelerator processing X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/e604d44b4b03f1f36998f91311d4e18e8f1b290e Several updates for fixing the subclassing problems and accelerator processing git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/os2/frame.h b/include/wx/os2/frame.h index be8181910a..468341d98e 100644 --- a/include/wx/os2/frame.h +++ b/include/wx/os2/frame.h @@ -102,7 +102,6 @@ public: #endif // wxUSE_STATUSBAR WXHMENU GetWinMenu() const { return m_hMenu; } - WXHWND GetFrame() const { return m_hFrame; } // Returns the origin of client area (may be different from (0,0) if the // frame has a toolbar) @@ -205,13 +204,6 @@ private: WXHWND m_hWndToolTip; #endif // tooltips - // - // The main handle of a frame window, that used for message processing - // is the client handle under PM. But we still need the frame handle - // as well - // - WXHWND m_hFrame; - // // Handles to child windows of the Frame that we don't have child objects for // diff --git a/src/os2/accel.cpp b/src/os2/accel.cpp index bda2003f77..1b901b20c4 100644 --- a/src/os2/accel.cpp +++ b/src/os2/accel.cpp @@ -90,7 +90,7 @@ wxAcceleratorTable::wxAcceleratorTable( ::WinSetAccelTable( vHabmain ,hAccel - ,(HWND)pFrame->GetFrame() + ,(HWND)pFrame->GetHWND() ); } M_ACCELDATA->m_hAccel = hAccel; @@ -153,7 +153,7 @@ wxAcceleratorTable::wxAcceleratorTable( ::WinSetAccelTable( vHabmain ,M_ACCELDATA->m_hAccel - ,(HWND)pFrame->GetFrame() + ,(HWND)pFrame->GetHWND() ); } diff --git a/src/os2/app.cpp b/src/os2/app.cpp index 46dc757d50..ef18d55511 100644 --- a/src/os2/app.cpp +++ b/src/os2/app.cpp @@ -184,7 +184,7 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxFrameClassName ,(PFNWP)wxWndProc - ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT + ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT | CS_FRAME ,sizeof(ULONG) )) { @@ -651,11 +651,11 @@ int wxApp::MainLoop() #if wxUSE_THREADS wxMutexGuiLeaveOrEnter(); #endif // wxUSE_THREADS - while (!Pending() && ProcessIdle()) - { -// wxUsleep(10000); - } - DoMessage(); + while (!Pending() && ProcessIdle()) + { +// wxUsleep(10000); + } + DoMessage(); } return (int)svCurrentMsg.mp1; } // end of wxApp::MainLoop @@ -761,11 +761,11 @@ bool wxApp::ProcessMessage( // // Anyone for a non-translation message? Try youngest descendants first. // - for (pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent()) - { - if (pWnd->OS2ProcessMessage(pWxmsg)) - return TRUE; - } +// for (pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent()) +// { +// if (pWnd->OS2ProcessMessage(pWxmsg)) +// return TRUE; +// } return FALSE; } // end of wxApp::ProcessMessage diff --git a/src/os2/frame.cpp b/src/os2/frame.cpp index e1244b42d8..98308cc88c 100644 --- a/src/os2/frame.cpp +++ b/src/os2/frame.cpp @@ -164,6 +164,7 @@ bool wxFrame::Create( wxFrame::~wxFrame() { m_isBeingDeleted = TRUE; + wxTopLevelWindows.DeleteObject(this); DeleteAllBars(); @@ -174,7 +175,7 @@ wxFrame::~wxFrame() if (wxTheApp->GetExitOnFrameDelete()) { - ::WinPostMsg(m_hFrame, WM_QUIT, 0, 0); + ::WinPostMsg(GetHWND(), WM_QUIT, 0, 0); } } wxModelessWindows.DeleteObject(this); @@ -262,7 +263,7 @@ void wxFrame::DoSetClientSize( ::WinQueryWindowRect(GetHwnd(), &vRect); - ::WinQueryWindowRect(m_hFrame, &vRect2); + ::WinQueryWindowRect(GetHWND(), &vRect2); // // Find the difference between the entire window (title bar and all) @@ -319,7 +320,7 @@ void wxFrame::DoGetSize( { RECTL vRect; - ::WinQueryWindowRect(m_hFrame, &vRect); + ::WinQueryWindowRect(GetHWND(), &vRect); *pWidth = vRect.xRight - vRect.xLeft; *pHeight = vRect.yTop - vRect.yBottom; } // end of wxFrame::DoGetSize @@ -332,7 +333,7 @@ void wxFrame::DoGetPosition( RECTL vRect; POINTL vPoint; - ::WinQueryWindowRect(m_hFrame, &vRect); + ::WinQueryWindowRect(GetHWND(), &vRect); vPoint.x = vRect.xLeft; // @@ -352,7 +353,7 @@ void wxFrame::DoShowWindow( int bShowCmd ) { - ::WinShowWindow(m_hFrame, (BOOL)bShowCmd); + ::WinShowWindow(GetHWND(), (BOOL)bShowCmd); m_bIconized = bShowCmd == SWP_MINIMIZE; } // end of wxFrame::DoShowWindow @@ -368,9 +369,9 @@ bool wxFrame::Show( { wxActivateEvent vEvent(wxEVT_ACTIVATE, TRUE, m_windowId); - ::WinQueryWindowPos(m_hFrame, &vSwp); + ::WinQueryWindowPos(GetHWND(), &vSwp); m_bIconized = vSwp.fl & SWP_MINIMIZE; - ::WinEnableWindow(m_hFrame, TRUE); + ::WinEnableWindow(GetHWND(), TRUE); vEvent.SetEventObject(this); GetEventHandler()->ProcessEvent(vEvent); } @@ -437,7 +438,7 @@ bool wxFrame::IsMaximized() const SWP vSwp; bool bIconic; - ::WinQueryWindowPos(m_hFrame, &vSwp); + ::WinQueryWindowPos(GetHWND(), &vSwp); return (vSwp.fl & SWP_MAXIMIZE); } // end of wxFrame::IsMaximized @@ -449,12 +450,12 @@ void wxFrame::SetIcon( if ((m_icon.GetHICON()) != NULLHANDLE) { - ::WinSendMsg( m_hFrame + ::WinSendMsg( GetHWND() ,WM_SETICON ,(MPARAM)((HPOINTER)m_icon.GetHICON()) ,NULL ); - ::WinSendMsg( m_hFrame + ::WinSendMsg( GetHWND() ,WM_UPDATEFRAME ,(MPARAM)FCF_ICON ,(MPARAM)0 @@ -487,7 +488,7 @@ wxStatusBar* wxFrame::OnCreateStatusBar( // so we have to set the parent to actually be the Frame. // hWnd = pStatusBar->GetHWND(); - if (!::WinSetParent(hWnd, m_hFrame, FALSE)) + if (!::WinSetParent(hWnd, GetHWND(), FALSE)) { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); @@ -648,14 +649,14 @@ void wxFrame::SetMenuBar( // // Now resize the client to fit the new frame // - WinQueryWindowPos(m_hFrame, &vSwp); - hTitlebar = WinWindowFromID(m_hFrame, FID_TITLEBAR); + WinQueryWindowPos(GetHWND(), &vSwp); + hTitlebar = WinWindowFromID(GetHWND(), FID_TITLEBAR); WinQueryWindowPos(hTitlebar, &vSwpTitlebar); - hHScroll = WinWindowFromID(m_hFrame, FID_HORZSCROLL); + hHScroll = WinWindowFromID(GetHWND(), FID_HORZSCROLL); WinQueryWindowPos(hHScroll, &vSwpHScroll); - hVScroll = WinWindowFromID(m_hFrame, FID_VERTSCROLL); + hVScroll = WinWindowFromID(GetHWND(), FID_VERTSCROLL); WinQueryWindowPos(hVScroll, &vSwpVScroll); - hMenuBar = WinWindowFromID(m_hFrame, FID_MENU); + hMenuBar = WinWindowFromID(GetHWND(), FID_MENU); WinQueryWindowPos(hMenuBar, &vSwpMenu); WinSetWindowPos( GetHwnd() ,HWND_TOP @@ -674,20 +675,20 @@ void wxFrame::InternalSetMenuBar() // // Set the parent and owner of the menubar to be the frame // - if (!::WinSetParent(m_hMenu, m_hFrame, FALSE)) + if (!::WinSetParent(m_hMenu, GetHWND(), FALSE)) { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); wxLogError("Error setting parent for submenu. Error: %s\n", sError); } - if (!::WinSetOwner(m_hMenu, m_hFrame)) + if (!::WinSetOwner(m_hMenu, GetHWND())) { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); wxLogError("Error setting parent for submenu. Error: %s\n", sError); } - WinSendMsg((HWND)m_hFrame, WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0); + WinSendMsg((HWND)GetHWND(), WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0); } // end of wxFrame::InternalSetMenuBar // @@ -749,9 +750,9 @@ bool wxFrame::ShowFullScreen( if (lStyle & wxFULLSCREEN_NOMENUBAR) { - ::WinSetParent(m_hMenu, m_hFrame, FALSE); - ::WinSetOwner(m_hMenu, m_hFrame); - ::WinSendMsg((HWND)m_hFrame, WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0); + ::WinSetParent(m_hMenu, GetHWND(), FALSE); + ::WinSetOwner(m_hMenu, GetHWND()); + ::WinSendMsg((HWND)GetHWND(), WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0); } // @@ -864,9 +865,9 @@ bool wxFrame::ShowFullScreen( if ((m_lFsStyle & wxFULLSCREEN_NOMENUBAR) && (m_hMenu != 0)) { - ::WinSetParent(m_hMenu, m_hFrame, FALSE); - ::WinSetOwner(m_hMenu, m_hFrame); - ::WinSendMsg((HWND)m_hFrame, WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0); + ::WinSetParent(m_hMenu, GetHWND(), FALSE); + ::WinSetOwner(m_hMenu, GetHWND()); + ::WinSendMsg((HWND)GetHWND(), WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0); } Maximize(m_bFsIsMaximized); @@ -987,33 +988,16 @@ bool wxFrame::OS2Create( // // Create the frame window // - if ((m_hFrame = ::WinCreateWindow( hParent // Frame is parent - ,WC_FRAME // standard frame class - ,(PSZ)zTitle // Window title - ,0 // No styles - ,0, 0, 0, 0 // Window position - ,NULLHANDLE // Owner - ,HWND_TOP // Sibling - ,(ULONG)nId // ID - ,(PVOID)&vFrameCtlData // Creation data - ,NULL // Window Pres Params - )) == 0L) - { - return FALSE; - } - if (!wxWindow::OS2Create( m_hFrame - ,wxFrameClassName - ,NULL - ,0L - ,0L - ,0L - ,0L - ,0L - ,m_hFrame + if (!wxWindow::OS2Create( hParent + ,WC_FRAME + ,(PSZ)zTitle + ,0 + ,0, 0, 0, 0 + ,NULLHANDLE ,HWND_TOP - ,(unsigned long)FID_CLIENT - ,NULL + ,(ULONG)nId + ,(PVOID)&vFrameCtlData ,NULL )) { @@ -1023,7 +1007,8 @@ bool wxFrame::OS2Create( // // Now size everything. If adding a menu the client will need to be resized. // - if (!::WinSetWindowPos( m_hFrame + + if (!::WinSetWindowPos( GetHWND() ,HWND_TOP ,nX ,nY @@ -1033,10 +1018,10 @@ bool wxFrame::OS2Create( )) return FALSE; - uCtlCount = SHORT1FROMMP(::WinSendMsg(m_hFrame, WM_FORMATFRAME, (MPARAM)vSwp, (MPARAM)vRect)); + uCtlCount = SHORT1FROMMP(::WinSendMsg(GetHWND(), WM_FORMATFRAME, (MPARAM)vSwp, (MPARAM)vRect)); for (int i = 0; i < uCtlCount; i++) { - if (vSwp[i].hwnd == m_hFrame) + if (vSwp[i].hwnd == GetHWND()) memcpy(&m_vSwp, &vSwp[i], sizeof(SWP)); else if (vSwp[i].hwnd == m_hVScroll) memcpy(&m_vSwpVScroll, &vSwp[i], sizeof(SWP)); @@ -1234,7 +1219,7 @@ bool wxFrame::OS2TranslateMessage( return FALSE; const wxAcceleratorTable& rAcceleratorTable = pMenuBar->GetAccelTable(); - return rAcceleratorTable.Translate(m_hFrame, pMsg); + return rAcceleratorTable.Translate(GetHWND(), pMsg); } // end of wxFrame::OS2TranslateMessage // --------------------------------------------------------------------------- @@ -1244,7 +1229,7 @@ bool wxFrame::HandlePaint() { RECTL vRect; - if (::WinQueryUpdateRect(GetHwnd(), &vRect)) + if (::WinQueryUpdateRect(GetHWND(), &vRect)) { if (m_bIconized) { @@ -1254,7 +1239,7 @@ bool wxFrame::HandlePaint() HPOINTER hIcon; if (m_icon.Ok()) - hIcon = (HPOINTER)::WinSendMsg(m_hFrame, WM_QUERYICON, 0L, 0L); + hIcon = (HPOINTER)::WinSendMsg(GetHWND(), WM_QUERYICON, 0L, 0L); else hIcon = (HPOINTER)m_hDefaultIcon; @@ -1289,12 +1274,13 @@ bool wxFrame::HandlePaint() } else { +/* DosBeep(500,500); HPS hPS; RECTL vRect; hPS = WinBeginPaint(GetHwnd(), 0L, &vRect); WinFillRect(hPS, &vRect, SYSCLR_WINDOW); - WinEndPaint(hPS); + WinEndPaint(hPS);*/ return wxWindow::HandlePaint(); } @@ -1429,8 +1415,9 @@ bool wxFrame::HandleMenuSelect( , WXHMENU hMenu ) { - int nMenuItem; +// int nMenuItem; +/* This is wrong section according to IBM's documentation if (nFlags == 0xFFFF && hMenu == 0) { // @@ -1450,10 +1437,24 @@ bool wxFrame::HandleMenuSelect( // return FALSE; } - wxMenuEvent vEvent(wxEVT_MENU_HIGHLIGHT, nMenuItem); +*/ - vEvent.SetEventObject(this); - return GetEventHandler()->ProcessEvent(vEvent); + if( !nFlags ) + { + MENUITEM mItem; + MRESULT rc; + + rc = WinSendMsg(hMenu, MM_QUERYITEM, MPFROM2SHORT(nItem, TRUE), (MPARAM)&mItem); + + if(rc && !(mItem.afStyle & (MIS_SUBMENU | MIS_SEPARATOR))) + { + wxMenuEvent vEvent(wxEVT_MENU_HIGHLIGHT, nItem); + + vEvent.SetEventObject(this); + GetEventHandler()->ProcessEvent(vEvent); // return value would be ignored by PM + } + } + return TRUE; } // end of wxFrame::HandleMenuSelect // --------------------------------------------------------------------------- @@ -1514,6 +1515,7 @@ MRESULT wxFrame::OS2WindowProc( ,wFlags ,hMenu ); + mRc = (MRESULT)TRUE; } break; @@ -1535,7 +1537,7 @@ MRESULT wxFrame::OS2WindowProc( HPOINTER hIcon; if (m_icon.Ok()) - hIcon = (HPOINTER)::WinSendMsg(m_hFrame, WM_QUERYICON, 0L, 0L); + hIcon = (HPOINTER)::WinSendMsg(GetHWND(), WM_QUERYICON, 0L, 0L); else hIcon = (HPOINTER)m_hDefaultIcon; mRc = (MRESULT)hIcon; @@ -1553,6 +1555,6 @@ MRESULT wxFrame::OS2WindowProc( ,wParam ,lParam ); - return (MRESULT)0; + return (MRESULT)mRc; } // wxFrame::OS2WindowProc diff --git a/src/os2/menu.cpp b/src/os2/menu.cpp index 5f2ddd5927..a9c390acc3 100644 --- a/src/os2/menu.cpp +++ b/src/os2/menu.cpp @@ -1031,7 +1031,7 @@ void wxMenuBar::Attach( // Ensure the accelerator table is set to the frame (not the client!) // if (!::WinSetAccelTable( vHabmain - ,(HWND)pFrame->GetFrame() + ,(HWND)pFrame->GetHWND() ,m_vAccelTable.GetHACCEL() )) wxLogLastError("WinSetAccelTable"); diff --git a/src/os2/window.cpp b/src/os2/window.cpp index 75900f1d95..0573448e60 100644 --- a/src/os2/window.cpp +++ b/src/os2/window.cpp @@ -306,8 +306,11 @@ wxWindow::~wxWindow() if (m_parent) m_parent->RemoveChild(this); DestroyChildren(); + if (m_hWnd) { +// UnsubclassWin(); + if(!::WinDestroyWindow(GetHWND())) wxLogLastError(wxT("DestroyWindow")); // @@ -382,6 +385,7 @@ bool wxWindow::Create( ,NULLHANDLE ,m_windowId ); + return(TRUE); } // end of wxWindow::Create @@ -714,28 +718,28 @@ void wxWindow::SubclassWin( wxCHECK_RET(::WinIsWindow(vHabmain, hwnd), wxT("invalid HWND in SubclassWin") ); - wxAssociateWinWithHandle(hwnd, this); +// wxAssociateWinWithHandle(hwnd, this); m_fnOldWndProc = (WXFARPROC) ::WinSubclassWindow(hwnd, (PFNWP)wxWndProc); - ::WinSetWindowULong(hwnd, QWS_USER, (ULONG)wxWndProc); +// ::WinSetWindowULong(hwnd, QWL_USER, (ULONG)wxWndProc); } // end of wxWindow::SubclassWin void wxWindow::UnsubclassWin() { - wxRemoveHandleAssociation(this); +// wxRemoveHandleAssociation(this); // // Restore old Window proc // - HWND hwnd = GetHwnd(); + HWND hwnd = GetHWND(); - if (hwnd) + if (m_hWnd) { - m_hWnd = 0; +// m_hWnd = 0; wxCHECK_RET( ::WinIsWindow(vHabmain, hwnd), wxT("invalid HWND in UnsubclassWin") ); - PFNWP fnProc = (PFNWP)::WinQueryWindowULong(hwnd, QWS_USER); + PFNWP fnProc = (PFNWP)::WinQueryWindowPtr(hwnd, QWP_PFNWP); if ( (m_fnOldWndProc != 0) && (fnProc != (PFNWP) m_fnOldWndProc)) { WinSubclassWindow(hwnd, (PFNWP)m_fnOldWndProc); @@ -1502,9 +1506,9 @@ MRESULT wxWindow::OS2DefWindowProc( ) { if (m_fnOldWndProc) - return ((MRESULT)m_fnOldWndProc()); + return (MRESULT)m_fnOldWndProc(GetHWND(), (ULONG)uMsg, (MPARAM)wParam, (MPARAM)lParam); else - return (::WinDefWindowProc(GetHwnd(), (ULONG)uMsg, (MPARAM)wParam, (MPARAM)lParam)); + return ::WinDefWindowProc(GetHWND(), (ULONG)uMsg, (MPARAM)wParam, (MPARAM)lParam); } // end of wxWindow::OS2DefWindowProc bool wxWindow::OS2ProcessMessage( @@ -1798,7 +1802,8 @@ MRESULT EXPENTRY wxWndProc( pWnd->SetHWND((WXHWND)hWnd); } - MRESULT rc; + MRESULT rc = (MRESULT)FALSE; + // // Stop right here if we don't have a valid handle in our wxWindow object. @@ -1813,7 +1818,7 @@ MRESULT EXPENTRY wxWndProc( { if (pWnd) rc = pWnd->OS2WindowProc(ulMsg, wParam, lParam); - if (!rc) + else rc = ::WinDefWindowProc(hWnd, ulMsg, wParam, lParam); } return rc; @@ -1833,22 +1838,26 @@ MRESULT wxWindow::OS2WindowProc( // Did we process the uMsg? // bool bProcessed = FALSE; + bool bAllow; + MRESULT mResult; + WXHICON hIcon; + WXHBRUSH hBrush; // // The return value // - union - { - bool bAllow; - MRESULT mResult; - WXHICON hIcon; - WXHBRUSH hBrush; - } vRc; +// union +// { +// bool bAllow; +// MRESULT mResult; +// WXHICON hIcon; +// WXHBRUSH hBrush; +// } vRc; // // For most messages we should return 0 when we do process the message // - vRc.mResult = (MRESULT)0; + mResult = (MRESULT)0; switch (uMsg) { @@ -1864,14 +1873,16 @@ MRESULT wxWindow::OS2WindowProc( // // Return 0 to bAllow window creation // - vRc.mResult = (MRESULT)(bMayCreate ? 0 : -1); + mResult = (MRESULT)(bMayCreate ? 0 : -1); } } break; case WM_DESTROY: - bProcessed = HandleDestroy(); - break; + HandleDestroy(); + bProcessed = TRUE; + delete this; + break; case WM_MOVE: bProcessed = HandleMove( LOWORD(lParam) @@ -1900,6 +1911,7 @@ MRESULT wxWindow::OS2WindowProc( bProcessed = HandleActivate( wState ,(WXHWND)hWnd ); + bProcessed = FALSE; } break; @@ -1920,7 +1932,7 @@ MRESULT wxWindow::OS2WindowProc( // ourselves in ~wxWindow // bProcessed = TRUE; - vRc.mResult = (MRESULT)TRUE; + mResult = (MRESULT)TRUE; break; case WM_SHOW: @@ -1987,14 +1999,14 @@ MRESULT wxWindow::OS2WindowProc( } if ( bProcessed ) - vRc.mResult = (MRESULT)TRUE; + mResult = (MRESULT)TRUE; } break; case WM_QUERYDLGCODE: if ( m_lDlgCode ) { - vRc.mResult = (MRESULT)m_lDlgCode; + mResult = (MRESULT)m_lDlgCode; bProcessed = TRUE; } // @@ -2093,7 +2105,7 @@ MRESULT wxWindow::OS2WindowProc( #if defined(__VISAGECPP__) && (__IBMCPP__ >= 400) case WM_CTLCOLORCHANGE: { - bProcessed = HandleCtlColor(&vRc.hBrush); + bProcessed = HandleCtlColor(&hBrush); } break; #endif @@ -2132,7 +2144,7 @@ MRESULT wxWindow::OS2WindowProc( // // We processed the message, i.e. erased the background // - vRc.mResult = (MRESULT)TRUE; + mResult = (MRESULT)TRUE; } break; @@ -2147,7 +2159,7 @@ MRESULT wxWindow::OS2WindowProc( if ( bProcessed ) { // we never set focus from here - vRc.mResult = FALSE; + mResult = FALSE; } break; @@ -2158,7 +2170,7 @@ MRESULT wxWindow::OS2WindowProc( case WM_SYSVALUECHANGED: // TODO: do something - vRc.mResult = (MRESULT)TRUE; + mResult = (MRESULT)TRUE; break; // @@ -2175,7 +2187,7 @@ MRESULT wxWindow::OS2WindowProc( // processing this message - exactly what we need because we've // just set the cursor. // - vRc.mResult = (MRESULT)TRUE; + mResult = (MRESULT)TRUE; } break; } @@ -2186,9 +2198,9 @@ MRESULT wxWindow::OS2WindowProc( wxLogTrace(wxTraceMessages, wxT("Forwarding %s to DefWindowProc."), wxGetMessageName(uMsg)); #endif // __WXDEBUG__ - vRc.mResult = OS2DefWindowProc(uMsg, wParam, lParam); + mResult = OS2DefWindowProc(uMsg, wParam, lParam); } - return vRc.mResult; + return mResult; } // end of wxWindow::OS2WindowProc // @@ -2414,6 +2426,12 @@ bool wxWindow::OS2Create( wxAssociateWinWithHandle((HWND)m_hWnd ,this ); + // + // Now need to subclass window. + // + + SubclassWin(GetHWND()); + return TRUE; } // end of wxWindow::OS2Create @@ -2806,11 +2824,11 @@ bool wxWindow::HandlePaint() return FALSE; } m_updateRegion = wxRegion(hRgn); - - hPS = WinBeginPaint(GetHwnd(), 0L, &vRect); +/* + hPS = WinBeginPaint(GetHWND(), 0L, &vRect); WinFillRect(hPS, &vRect, SYSCLR_WINDOW); WinEndPaint(hPS); - +*/ vEvent.SetEventObject(this); return (GetEventHandler()->ProcessEvent(vEvent)); } // end of wxWindow::HandlePaint