From: David Webster Date: Mon, 2 Oct 2000 02:49:35 +0000 (+0000) Subject: OS/2 Statusbar fixes, and class interface updates X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/5b3ed311352212a92f1a20f250fc1da325739b91 OS/2 Statusbar fixes, and class interface updates git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8454 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/generic/statusbr.cpp b/src/generic/statusbr.cpp index a65e6c1e5c..82b90a180b 100644 --- a/src/generic/statusbr.cpp +++ b/src/generic/statusbr.cpp @@ -80,7 +80,6 @@ bool wxStatusBarGeneric::Create(wxWindow *parent, m_nFields = 0; m_borderX = wxTHICK_LINE_BORDER; m_borderY = wxTHICK_LINE_BORDER; - m_themeEnabled = TRUE; bool success = wxWindow::Create(parent, id, wxDefaultPosition, wxDefaultSize, @@ -176,11 +175,17 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) ) { wxPaintDC dc(this); +#ifdef __WXPM__ + RECTL wrectl; + + ::WinQueryWindowRect(GetHWND(), &wrectl); + ::WinFillRect(dc.GetHDC(), &wrectl, CLR_BLACK); +#else + int i; if ( GetFont().Ok() ) dc.SetFont(GetFont()); dc.SetBackgroundMode(wxTRANSPARENT); - dc.SetTextForeground(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOWTEXT)); for ( i = 0; i < m_nFields; i ++ ) DrawField(dc, i); @@ -188,6 +193,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) ) # ifdef __WXMSW__ dc.SetFont(wxNullFont); # endif // MSW +#endif } void wxStatusBarGeneric::DrawFieldText(wxDC& dc, int i) @@ -322,7 +328,7 @@ bool wxStatusBarGeneric::GetFieldRect(int n, wxRect& rect) const void wxStatusBarGeneric::InitColours() { // Shadow colours -#ifndef __WIN16__ +#if defined(__WIN95__) wxColour mediumShadowColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW)); m_mediumShadowPen = wxPen(mediumShadowColour, 1, wxSOLID); diff --git a/src/generic/tipwin.cpp b/src/generic/tipwin.cpp index 6dc8aa8658..26f83781ba 100644 --- a/src/generic/tipwin.cpp +++ b/src/generic/tipwin.cpp @@ -72,8 +72,12 @@ wxTipWindow::wxTipWindow(wxWindow *parent, { // set colours SetForegroundColour(*wxBLACK); +#if !defined(__WXPM__) SetBackgroundColour(wxColour(0xc3ffff)); - +#else + // What is 0xc3ffff, try some legable documentation for those of us who don't memorize hex codes?? + SetBackgroundColour(wxColour(*wxWHITE)); +#endif // set position and size int x, y; wxGetMousePosition(&x, &y); diff --git a/src/os2/app.cpp b/src/os2/app.cpp index ef18d55511..70342ca40f 100644 --- a/src/os2/app.cpp +++ b/src/os2/app.cpp @@ -183,8 +183,8 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxFrameClassName - ,(PFNWP)wxWndProc - ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT | CS_FRAME + ,NULL + ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT ,sizeof(ULONG) )) { @@ -196,7 +196,7 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxFrameClassNameNoRedraw - ,(PFNWP)wxWndProc + ,NULL ,0 ,0 )) @@ -209,7 +209,7 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxMDIFrameClassName - ,(PFNWP)wxWndProc + ,NULL ,CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT ,0 )) @@ -222,7 +222,7 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxMDIFrameClassNameNoRedraw - ,(PFNWP)wxWndProc + ,NULL ,0 ,0 )) @@ -235,7 +235,7 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxMDIChildFrameClassName - ,(PFNWP)wxWndProc + ,NULL ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_SYNCPAINT | CS_HITTEST ,0 )) @@ -248,7 +248,7 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxMDIChildFrameClassNameNoRedraw - ,(PFNWP)wxWndProc + ,NULL ,CS_HITTEST ,0 )) @@ -261,7 +261,7 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxPanelClassName - ,(PFNWP)wxWndProc + ,NULL ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_SAVEBITS | CS_SYNCPAINT ,0 )) @@ -274,8 +274,8 @@ bool wxApp::RegisterWindowClasses( if (!::WinRegisterClass( vHab ,wxCanvasClassName - ,(PFNWP)wxWndProc - ,CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_SAVEBITS | CS_SYNCPAINT + ,NULL + ,0 // CS_MOVENOTIFY | CS_SIZEREDRAW | CS_HITTEST | CS_SAVEBITS | CS_SYNCPAINT ,0 )) { @@ -651,11 +651,11 @@ int wxApp::MainLoop() #if wxUSE_THREADS wxMutexGuiLeaveOrEnter(); #endif // wxUSE_THREADS - while (!Pending() && ProcessIdle()) - { + while (/*Pending() &&*/ ProcessIdle()) + { // wxUsleep(10000); - } - DoMessage(); + } + DoMessage(); } return (int)svCurrentMsg.mp1; } // end of wxApp::MainLoop @@ -749,11 +749,13 @@ bool wxApp::ProcessMessage( if((CHARMSG(pChmsg)->fs & (KC_ALT | KC_CTRL)) && CHARMSG(pChmsg)->chr != 0) CHARMSG(pChmsg)->chr = (USHORT)wxToupper((UCHAR)uSch); - for(pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent() ) - { - if((bRc = pWnd->OS2TranslateMessage(pWxmsg)) == TRUE) - break; - } + + for(pWnd = pWndThis; pWnd; pWnd = pWnd->GetParent() ) + { + if((bRc = pWnd->OS2TranslateMessage(pWxmsg)) == TRUE) + break; + } + if(!bRc) // untranslated, should restore original value CHARMSG(pChmsg)->chr = uSch; } @@ -778,7 +780,7 @@ void wxApp::OnIdle( // // Avoid recursion (via ProcessEvent default case) // - if (sbInOnIdle ) + if (sbInOnIdle) return; sbInOnIdle = TRUE; diff --git a/src/os2/frame.cpp b/src/os2/frame.cpp index 1b431f4443..9de5fdf513 100644 --- a/src/os2/frame.cpp +++ b/src/os2/frame.cpp @@ -178,6 +178,7 @@ wxFrame::~wxFrame() ::WinPostMsg(NULL, WM_QUIT, 0, 0); } } + wxModelessWindows.DeleteObject(this); // @@ -371,6 +372,7 @@ bool wxFrame::Show( ::WinQueryWindowPos(GetHWND(), &vSwp); m_bIconized = vSwp.fl & SWP_MINIMIZE; + ::WinSendMsg(GetHWND(), WM_UPDATEFRAME, (MPARAM)~0, 0); ::WinEnableWindow(GetHWND(), TRUE); vEvent.SetEventObject(this); GetEventHandler()->ProcessEvent(vEvent); @@ -475,51 +477,22 @@ wxStatusBar* wxFrame::OnCreateStatusBar( SWP vSwp; ERRORID vError; wxString sError; - HWND hWnd; pStatusBar = wxFrameBase::OnCreateStatusBar( nNumber ,lulStyle ,vId ,rName - ); - // - // The default parent set for the Statusbar is m_hWnd which, of course, - // is the handle to the client window of the frame. We don't want that, - // so we have to set the parent to actually be the Frame. - // - hWnd = pStatusBar->GetHWND(); - if (!::WinSetParent(hWnd, GetHWND(), FALSE)) - { - vError = ::WinGetLastError(vHabmain); - sError = wxPMErrorToStr(vError); - wxLogError("Error setting parent for statusbar. Error: %s\n", sError); + ); + + if( !pStatusBar ) return NULL; - } + // + // to show statusbar // - // Also we need to reset it positioning to enable the SHOW attribute - // - if (!::WinQueryWindowPos((HWND)pStatusBar->GetHWND(), &vSwp)) - { - vError = ::WinGetLastError(vHabmain); - sError = wxPMErrorToStr(vError); - wxLogError("Error querying frame for statusbar position. Error: %s\n", sError); - return NULL; - } - if (!::WinSetWindowPos( (HWND)pStatusBar->GetHWND() - ,HWND_TOP - ,vSwp.cx - ,vSwp.cy - ,vSwp.x - ,vSwp.y - ,SWP_SIZE | SWP_MOVE | SWP_SHOW | SWP_ZORDER - )) - { - vError = ::WinGetLastError(vHabmain); - sError = wxPMErrorToStr(vError); - wxLogError("Error setting statusbar position. Error: %s\n", sError); - return NULL; - } + if( ::WinIsWindowShowing(GetHWND()) ) + ::WinSendMsg(GetHWND(), WM_UPDATEFRAME, (MPARAM)~0, 0); + return pStatusBar; } // end of wxFrame::OnCreateStatusBar @@ -567,10 +540,10 @@ void wxFrame::PositionStatusBar() } if (!::WinSetWindowPos( m_frameStatusBar->GetHWND() ,HWND_TOP - ,nStatbarWidth - ,nStatbarHeight ,vSwp.x ,vSwp.y + ,nStatbarWidth + ,nStatbarHeight ,SWP_SIZE | SWP_MOVE | SWP_SHOW | SWP_ZORDER )) { @@ -860,7 +833,7 @@ bool wxFrame::ShowFullScreen( if ((m_lFsStyle & wxFULLSCREEN_NOSTATUSBAR) && (m_nFsStatusBarFields > 0)) { CreateStatusBar(m_nFsStatusBarFields); - PositionStatusBar(); +// PositionStatusBar(); } if ((m_lFsStyle & wxFULLSCREEN_NOMENUBAR) && (m_hMenu != 0)) @@ -1004,6 +977,14 @@ bool wxFrame::OS2Create( return FALSE; } + // + // Now need to subclass window. + // + + //SubclassWin(GetHWND()); + +// ::WinCreateWindow(GetHWND(), WC_LISTBOX, "", WS_VISIBLE, 0, 0, +// 0, 0, GetHWND(), HWND_TOP, FID_CLIENT, NULL, NULL); // // Now size everything. If adding a menu the client will need to be resized. // @@ -1017,7 +998,7 @@ bool wxFrame::OS2Create( ,SWP_SIZE | SWP_MOVE | SWP_ACTIVATE | SWP_ZORDER )) return FALSE; - +/* uCtlCount = SHORT1FROMMP(::WinSendMsg(GetHWND(), WM_FORMATFRAME, (MPARAM)vSwp, (MPARAM)vRect)); for (int i = 0; i < uCtlCount; i++) { @@ -1029,7 +1010,7 @@ bool wxFrame::OS2Create( memcpy(&m_vSwpVScroll, &vSwp[i], sizeof(SWP)); else if (vSwp[i].hwnd == m_hTitleBar) memcpy(&m_vSwpTitleBar, &vSwp[i], sizeof(SWP)); - } + }*/ return TRUE; } // end of wxFrame::OS2Create @@ -1352,7 +1333,7 @@ bool wxFrame::HandleSize( } #endif // wxUSE_NATIVE_STATUSBAR - PositionStatusBar(); +// PositionStatusBar(); PositionToolBar(); wxSizeEvent vEvent( wxSize( nX ,nY @@ -1388,7 +1369,7 @@ bool wxFrame::HandleCommand( // // Handle here commands from menus and accelerators // - if (nCmd == 0 || nCmd == 1) + if (nCmd == CMDSRC_MENU || nCmd == CMDSRC_ACCELERATOR) { if (wxCurrentPopupMenu) { @@ -1487,11 +1468,12 @@ MRESULT wxFrame::OS2WindowProc( WXHWND hWnd; UnpackCommand( (WXWPARAM)wParam - ,(WXLPARAM)lParam - ,&wId - ,&hWnd - ,&wCmd - ); + ,(WXLPARAM)lParam + ,&wId + ,&hWnd + ,&wCmd + ); + bProcessed = HandleCommand( wId ,wCmd ,(WXHWND)hWnd @@ -1548,6 +1530,81 @@ MRESULT wxFrame::OS2WindowProc( case WM_SIZE: bProcessed = HandleSize(LOWORD(lParam), HIWORD(lParam), (WXUINT)wParam); break; + + case WM_QUERYFRAMECTLCOUNT: + { + USHORT itemCount = SHORT1FROMMR(OS2GetOldWndProc()(GetHWND(), uMessage, wParam, lParam)); + if(m_frameStatusBar) + ++itemCount; + bProcessed = TRUE; + mRc = MRFROMSHORT( itemCount ); + } + break; + + case WM_FORMATFRAME: + { + PSWP pSWP = 0; + USHORT usClient = 0; + SWP swp; + USHORT itemCount; + char s[128]; + + itemCount = SHORT1FROMMR(OS2GetOldWndProc()(GetHWND(), uMessage, wParam, lParam)); + pSWP = (PSWP)PVOIDFROMMP( wParam ); + + while(pSWP[usClient].hwnd != WinWindowFromID(GetHWND(), FID_CLIENT) + && usClient < itemCount) + usClient++; + + if(m_frameStatusBar) + { + int height; + + m_frameStatusBar->GetSize(NULL, &height); + + if(usClient == itemCount) + { + // frame has no client window + // using another method of calculation + RECTL wRectl; + + ::WinQueryWindowRect(GetHWND(), &wRectl); + ::WinMapWindowPoints(GetHWND(), HWND_DESKTOP, (PPOINTL)&wRectl, 2); + ::WinCalcFrameRect(GetHWND(), &wRectl, TRUE); + ::WinMapWindowPoints(HWND_DESKTOP, GetHWND(), (PPOINTL)&wRectl, 2); + + pSWP[itemCount].x = wRectl.xLeft; + pSWP[itemCount].y = wRectl.yBottom; + pSWP[itemCount].cx = wRectl.xRight - wRectl.xLeft - 1; + pSWP[itemCount].cy = height; + pSWP[itemCount].fl = SWP_SIZE | + SWP_MOVE | + SWP_SHOW; + pSWP[itemCount].hwnd = m_frameStatusBar->GetHWND(); + pSWP[itemCount].hwndInsertBehind = HWND_TOP; + ++itemCount; + } + else + { + pSWP[itemCount].x = pSWP[usClient].x; + pSWP[itemCount].y = pSWP[usClient].y; + pSWP[itemCount].cx = pSWP[usClient].cx; + pSWP[itemCount].cy = height; + pSWP[itemCount].fl = SWP_SIZE | + SWP_MOVE | + SWP_SHOW; + pSWP[itemCount].hwnd = m_frameStatusBar->GetHWND(); + pSWP[itemCount].hwndInsertBehind = HWND_TOP; + pSWP[usClient].cy -= height; + pSWP[usClient].y += height; + + ++itemCount; + } + } + bProcessed = TRUE; + mRc = MRFROMSHORT(itemCount); + } + break; } if (!bProcessed ) @@ -1558,3 +1615,63 @@ MRESULT wxFrame::OS2WindowProc( return (MRESULT)mRc; } // wxFrame::OS2WindowProc + +void wxFrame::SetClient(WXHWND c_Hwnd) +{ + // Are we really need to implement it? +} + +void wxFrame::SetClient(wxWindow* c_Window) +{ + wxWindow *oldClient = this->GetClient(); + bool clientHasFocus = oldClient && (oldClient == wxWindow::FindFocus()); + + if(oldClient == c_Window) // nothing to do + return; + + if(c_Window == NULL) // just need to remove old client + { + if(oldClient == NULL) // nothing to do + return; + + if( clientHasFocus ) + this->SetFocus(); + + oldClient->Enable( FALSE ); + oldClient->Show( FALSE ); + ::WinSetWindowUShort(oldClient->GetHWND(), QWS_ID, (USHORT)oldClient->GetId()); + // to avoid OS/2 bug need to update frame + ::WinSendMsg((HWND)this->GetHWND(), WM_UPDATEFRAME, (MPARAM)~0, 0); + return; + } + + // else need to change client + if( clientHasFocus ) + this->SetFocus(); + + ::WinEnableWindowUpdate((HWND)GetHWND(), FALSE); + if( oldClient ) + { + oldClient->Enable( FALSE ); + oldClient->Show( FALSE ); + ::WinSetWindowUShort(oldClient->GetHWND(), QWS_ID, (USHORT)oldClient->GetId()); + } + + c_Window->Reparent( this ); + ::WinSetWindowUShort(c_Window->GetHWND(), QWS_ID, FID_CLIENT); + + ::WinEnableWindowUpdate((HWND)GetHWND(), TRUE); + c_Window->Enable(); + c_Window->Show(); // ensure client is showing + + if( this->IsShown() ) + { + this->Show(); + ::WinSendMsg(GetHWND(), WM_UPDATEFRAME, (MPARAM)~0, 0); + } +} + +wxWindow *wxFrame::GetClient() +{ + return wxFindWinFromHandle((WXHWND)::WinWindowFromID(GetHWND(), FID_CLIENT)); +} diff --git a/src/os2/makefile.va b/src/os2/makefile.va index 1bd843ce90..ba49185c32 100644 --- a/src/os2/makefile.va +++ b/src/os2/makefile.va @@ -130,6 +130,7 @@ GENERICOBJS= \ ..\generic\$D\tbarsmpl.obj \ ..\generic\$D\textdlgg.obj \ ..\generic\$D\tipdlg.obj \ + ..\generic\$D\tipwin.obj \ ..\generic\$D\treectlg.obj \ ..\generic\$D\treelay.obj \ ..\generic\$D\wizard.obj @@ -173,6 +174,7 @@ GENLIBOBJS= \ tbarsmpl.obj \ textdlgg.obj \ tipdlg.obj \ + tipwin.obj \ treectlg.obj \ treelay.obj \ wizard.obj @@ -189,6 +191,7 @@ COMMONOBJS = \ ..\common\$D\cmdline.obj \ ..\common\$D\cmndata.obj \ ..\common\$D\config.obj \ + ..\common\$D\cshelp.obj \ ..\common\$D\ctrlcmn.obj \ ..\common\$D\ctrlsub.obj \ ..\common\$D\datetime.obj \ @@ -300,6 +303,7 @@ COMLIBOBJS1 = \ cmdline.obj \ cmndata.obj \ config.obj \ + cshelp.obj \ ctrlcmn.obj \ ctrlsub.obj \ datetime.obj \ @@ -336,10 +340,10 @@ COMLIBOBJS1 = \ helpbase.obj \ http.obj \ imagall.obj \ - imagbmp.obj \ - image.obj + imagbmp.obj COMLIBOBJS2 = \ + image.obj \ imaggif.obj \ imagjpeg.obj \ imagpcx.obj \ @@ -380,10 +384,10 @@ COMLIBOBJS2 = \ string.obj \ tbarbase.obj \ textcmn.obj \ - textfile.obj \ - timercmn.obj + textfile.obj COMLIBOBJS3 = \ + timercmn.obj \ tokenzr.obj \ treebase.obj \ txtstrm.obj \ @@ -631,6 +635,7 @@ $(COMLIBOBJS1): copy ..\common\$D\cmdline.obj copy ..\common\$D\cmndata.obj copy ..\common\$D\config.obj + copy ..\common\$D\cshelp.obj copy ..\common\$D\ctrlcmn.obj copy ..\common\$D\ctrlsub.obj copy ..\common\$D\datetime.obj @@ -668,9 +673,9 @@ $(COMLIBOBJS1): copy ..\common\$D\http.obj copy ..\common\$D\imagall.obj copy ..\common\$D\imagbmp.obj - copy ..\common\$D\image.obj $(COMLIBOBJS2): + copy ..\common\$D\image.obj copy ..\common\$D\imaggif.obj copy ..\common\$D\imagjpeg.obj copy ..\common\$D\imagpcx.obj @@ -712,9 +717,9 @@ $(COMLIBOBJS2): copy ..\common\$D\tbarbase.obj copy ..\common\$D\textcmn.obj copy ..\common\$D\textfile.obj - copy ..\common\$D\timercmn.obj $(COMLIBOBJS3): + copy ..\common\$D\timercmn.obj copy ..\common\$D\tokenzr.obj copy ..\common\$D\treebase.obj copy ..\common\$D\txtstrm.obj @@ -769,6 +774,7 @@ $(GENLIBOBJS): copy ..\generic\$D\tbarsmpl.obj copy ..\generic\$D\textdlgg.obj copy ..\generic\$D\tipdlg.obj + copy ..\generic\$D\tipwin.obj copy ..\generic\$D\treectlg.obj copy ..\generic\$D\treelay.obj copy ..\generic\$D\wizard.obj diff --git a/src/os2/utils.cpp b/src/os2/utils.cpp index 9bfe35f46f..4ae4063779 100644 --- a/src/os2/utils.cpp +++ b/src/os2/utils.cpp @@ -755,6 +755,31 @@ void wxDisplaySize( *pHeight = (int)lHeight; } +void wxDisplaySizeMM( + int* pWidth +, int* pHeight +) +{ + HPS hpsScreen; + HDC hdcScreen; + + hpsScreen = ::WinGetScreenPS(HWND_DESKTOP); + hdcScreen = ::GpiQueryDevice(hpsScreen); + + if (pWidth) + ::DevQueryCaps( hdcScreen + ,CAPS_HORIZONTAL_RESOLUTION + ,1L + ,(PLONG)pWidth + ); + if (pHeight) + ::DevQueryCaps( hdcScreen + ,CAPS_VERTICAL_RESOLUTION + ,1L + ,(PLONG)pHeight + ); +} + bool wxDirExists( const wxString& rDir ) diff --git a/src/os2/window.cpp b/src/os2/window.cpp index 1618cb714a..9d0e828f52 100644 --- a/src/os2/window.cpp +++ b/src/os2/window.cpp @@ -1718,9 +1718,14 @@ void wxWindow::UnpackCommand( , WORD* pCmd ) { +/* *pId = LOWORD(wParam); *phWnd = (WXHWND)lParam; *pCmd = HIWORD(wParam); +*/ + *pId = LOWORD(wParam); + *phWnd = NULL; // or may be GetHWND() ? + *pCmd = LOWORD(lParam); } // end of wxWindow::UnpackCommand void wxWindow::UnpackActivate( @@ -1802,7 +1807,7 @@ MRESULT EXPENTRY wxWndProc( pWnd->SetHWND((WXHWND)hWnd); } - MRESULT rc = (MRESULT)FALSE; + MRESULT rc = (MRESULT)0; // @@ -1821,6 +1826,7 @@ MRESULT EXPENTRY wxWndProc( else rc = ::WinDefWindowProc(hWnd, ulMsg, wParam, lParam); } + return rc; } // end of wxWndProc @@ -1881,7 +1887,6 @@ MRESULT wxWindow::OS2WindowProc( case WM_DESTROY: HandleDestroy(); bProcessed = TRUE; -// delete this; break; case WM_MOVE: @@ -2337,10 +2342,10 @@ bool wxWindow::OS2Create( { ERRORID vError; wxString sError; - long lX1 = (long)CW_USEDEFAULT; + long lX1 = 0L; long lY1 = 0L; - long lWidth1 = (long)CW_USEDEFAULT; - long lHeight1 = 100L; + long lWidth1 = 20L; + long lHeight1 = 20L; int nControlId = 0; // @@ -2426,7 +2431,7 @@ bool wxWindow::OS2Create( wxAssociateWinWithHandle((HWND)m_hWnd ,this ); - // + // // Now need to subclass window. //