X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77f4f0a700031e1c1fa4ece26df44f3af49b7545..05e0b047d879cdbfade7f2ab346c0acdf3e29f96:/src/os2/window.cpp diff --git a/src/os2/window.cpp b/src/os2/window.cpp index 51b1e6107d..74490afd45 100644 --- a/src/os2/window.cpp +++ b/src/os2/window.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: windows.cpp +// Name: src/os2/window.cpp // Purpose: wxWindow // Author: David Webster // Modified by: @@ -14,13 +14,13 @@ // #include "wx/wxprec.h" +#include "wx/window.h" + #ifndef WX_PRECOMP #define INCL_DOS #define INCL_PM #include - #include "wx/window.h" #include "wx/accel.h" - #include "wx/setup.h" #include "wx/menu.h" #include "wx/dc.h" #include "wx/dcclient.h" @@ -44,10 +44,16 @@ #include "wx/statusbr.h" #include "wx/toolbar.h" #include "wx/settings.h" + #include "wx/intl.h" + #include "wx/log.h" + #include "wx/textctrl.h" + #include "wx/menuitem.h" #include #endif -#if wxUSE_OWNER_DRAWN +#include "wx/os2/dcclient.h" + +#if wxUSE_OWNER_DRAWN #include "wx/ownerdrw.h" #endif @@ -55,9 +61,6 @@ #include "wx/dnd.h" #endif -#include "wx/menuitem.h" -#include "wx/log.h" - #include "wx/os2/private.h" #if wxUSE_TOOLTIPS @@ -72,12 +75,6 @@ #include "wx/caret.h" #endif // wxUSE_CARET -#include "wx/intl.h" -#include "wx/log.h" - - -#include "wx/textctrl.h" - #include // @@ -126,7 +123,7 @@ QMSG s_currentMsg; #if wxUSE_MENUS_NATIVE -wxMenu* wxCurrentPopupMenu = NULL; +extern wxMenu* wxCurrentPopupMenu; #endif // wxUSE_MENUS_NATIVE // --------------------------------------------------------------------------- @@ -143,7 +140,7 @@ MRESULT EXPENTRY wxWndProc( HWND hWnd ); #ifdef __WXDEBUG__ - const char *wxGetMessageName(int message); + const wxChar *wxGetMessageName(int message); #endif //__WXDEBUG__ wxWindowOS2* FindWindowForMouseEvent( wxWindow* pWin @@ -159,8 +156,9 @@ wxWindow* wxFindWinFromHandle(WXHWND hWnd); // // get the current state of SHIFT/CTRL keys // -static inline bool IsShiftDown() { return (::WinGetKeyState(HWND_DESKTOP, VK_SHIFT) & 0x8000) != 0; } -static inline bool IsCtrlDown() { return (::WinGetKeyState(HWND_DESKTOP, VK_CTRL) & 0x8000) != 0; } +static inline bool IsKeyDown(LONG key) {return (::WinGetKeyState(HWND_DESKTOP, key) & 0x8000) != 0; } +static inline bool IsShiftDown() { return IsKeyDown(VK_SHIFT); } +static inline bool IsCtrlDown() { return IsKeyDown(VK_CTRL); } static wxWindow* gpWinBeingCreated = NULL; @@ -299,7 +297,6 @@ void wxWindowOS2::Init() m_bUseCtl3D = false; m_bMouseInWindow = false; m_bLastKeydownProcessed = false; - m_pChildrenDisabled = NULL; // // wxWnd @@ -361,7 +358,6 @@ wxWindowOS2::~wxWindowOS2() // wxRemoveHandleAssociation(this); } - delete m_pChildrenDisabled; } // end of wxWindowOS2::~wxWindowOS2 // real construction (Init() must have been called before!) @@ -410,9 +406,7 @@ bool wxWindowOS2::Create( wxWindow* pParent, pParent->AddChild(this); hParent = GetWinHwnd(pParent); - if ( pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)) || - pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) - ) + if (pParent->IsKindOf(CLASSINFO(wxScrolledWindow))) ulCreateFlags |= WS_CLIPSIBLINGS; } @@ -485,70 +479,12 @@ wxWindow* wxWindowBase::DoFindFocus() return NULL; } // wxWindowBase::DoFindFocus -bool wxWindowOS2::Enable( bool bEnable ) +void wxWindowOS2::DoEnable( bool bEnable ) { - if (!wxWindowBase::Enable(bEnable)) - return false; - HWND hWnd = GetHwnd(); - if ( hWnd ) ::WinEnableWindow(hWnd, (BOOL)bEnable); - - // - // The logic below doesn't apply to the top level windows -- otherwise - // showing a modal dialog would result in total greying out (and ungreying - // out later) of everything which would be really ugly - // - if (IsTopLevel()) - return true; - - wxWindowList::compatibility_iterator node = GetChildren().GetFirst(); - - while (node) - { - wxWindow* pChild = node->GetData(); - - if (bEnable) - { - // - // Enable the child back unless it had been disabled before us - // - if (!m_pChildrenDisabled || !m_pChildrenDisabled->Find(pChild)) - pChild->Enable(); - } - else // we're being disabled - { - if (pChild->IsEnabled()) - { - // - // Disable it as children shouldn't stay enabled while the - // parent is not - // - pChild->Disable(); - } - else // child already disabled, remember it - { - // - // Have we created the list of disabled children already? - // - if (!m_pChildrenDisabled) - m_pChildrenDisabled = new wxWindowList; - m_pChildrenDisabled->Append(pChild); - } - } - node = node->GetNext(); - } - if (bEnable && m_pChildrenDisabled) - { - // - // We don't need this list any more, don't keep unused memory - // - delete m_pChildrenDisabled; - m_pChildrenDisabled = NULL; - } - return true; -} // end of wxWindowOS2::Enable +} bool wxWindowOS2::Show( bool bShow ) { @@ -576,15 +512,15 @@ void wxWindowOS2::Lower() ::WinSetWindowPos(GetHwnd(), HWND_BOTTOM, 0, 0, 0, 0, SWP_ZORDER | SWP_DEACTIVATE); } // end of wxWindowOS2::Lower -void wxWindowOS2::SetTitle( const wxString& rTitle ) +void wxWindowOS2::SetLabel( const wxString& label ) { - ::WinSetWindowText(GetHwnd(), (PSZ)rTitle.c_str()); -} // end of wxWindowOS2::SetTitle + ::WinSetWindowText(GetHwnd(), label.c_str()); +} // end of wxWindowOS2::SetLabel -wxString wxWindowOS2::GetTitle() const +wxString wxWindowOS2::GetLabel() const { return wxGetWindowText(GetHWND()); -} // end of wxWindowOS2::GetTitle +} // end of wxWindowOS2::GetLabel void wxWindowOS2::DoCaptureMouse() { @@ -595,7 +531,7 @@ void wxWindowOS2::DoCaptureMouse() ::WinSetCapture(HWND_DESKTOP, hWnd); m_bWinCaptured = true; } -} // end of wxWindowOS2::GetTitle +} // end of wxWindowOS2::DoCaptureMouse void wxWindowOS2::DoReleaseMouse() { @@ -727,6 +663,10 @@ void wxWindowOS2::SetScrollbar( int nOrient, int nOldRange = nRange - nThumbVisible; int nRange1 = nOldRange; int nPageSize = nThumbVisible; + int nVSBWidth = wxSystemSettingsNative::GetMetric(wxSYS_VSCROLL_X, + this); + int nHSBHeight = wxSystemSettingsNative::GetMetric(wxSYS_HSCROLL_Y, + this); SBCDATA vInfo; ULONG ulStyle = WS_VISIBLE | WS_SYNCPAINT; @@ -788,8 +728,8 @@ void wxWindowOS2::SetScrollbar( int nOrient, ,ulStyle ,vSwp.x ,vSwp.y - ,vSwp.cx - 20 - ,20 + ,vSwp.cx - nVSBWidth + ,nHSBHeight ,hWnd ,HWND_TOP ,60000 @@ -806,18 +746,19 @@ void wxWindowOS2::SetScrollbar( int nOrient, // origin, not the frame's client window origin. // The starting x position is the same as the starting x position // of the owner, but in terms of the parent frame. - // The starting y position is 20 pels below the origin of the - // owner in terms of the parent frame. - // The horz bar is the same width as the owner and 20 pels high. + // The starting y position is wxSYS_HSCROLL_Y pels below the + // origin of the owner in terms of the parent frame. + // The horz bar is the same width as the owner and wxSYS_HSCROLL_Y + // pels high. // if (nRange1 >= nThumbVisible) { ::WinSetWindowPos( m_hWndScrollBarHorz ,HWND_TOP ,vSwp.x + vSwpOwner.x - ,(vSwp.y + vSwpOwner.y) - 20 + ,(vSwp.y + vSwpOwner.y) - nHSBHeight ,vSwpOwner.cx - ,20 + ,nHSBHeight ,SWP_MOVE | SWP_SIZE | SWP_SHOW | SWP_ACTIVATE | SWP_ZORDER ); ::WinSendMsg( m_hWndScrollBarHorz @@ -858,10 +799,10 @@ void wxWindowOS2::SetScrollbar( int nOrient, ,WC_SCROLLBAR ,(PSZ)NULL ,ulStyle - ,vSwp.x + vSwp.cx - 20 - ,vSwp.y + 20 - ,20 - ,vSwp.cy - 20 + ,vSwp.x + vSwp.cx - nVSBWidth + ,vSwp.y + nHSBHeight + ,nVSBWidth + ,vSwp.cy - nHSBHeight ,hWnd ,HWND_TOP ,60001 @@ -884,7 +825,7 @@ void wxWindowOS2::SetScrollbar( int nOrient, // position of the scrollbar relative to the parent frame (the vert // scrollbar is on the right and starts at the bottom of the // owner window). - // It is 20 pels wide and the same height as the owner. + // It is wxSYS_VSCROLL_X pels wide and the same height as the owner. // if (nRange1 >= nThumbVisible) { @@ -892,7 +833,7 @@ void wxWindowOS2::SetScrollbar( int nOrient, ,HWND_TOP ,vSwp.x + vSwpOwner.x + vSwpOwner.cx ,vSwp.y + vSwpOwner.y - ,20 + ,nVSBWidth ,vSwpOwner.cy ,SWP_ACTIVATE | SWP_MOVE | SWP_SIZE | SWP_SHOW ); @@ -1143,7 +1084,7 @@ void wxWindowOS2::OnIdle( ,vPoint.y ,nState ); - (void)GetEventHandler()->ProcessEvent(rEvent); + (void)HandleWindowEvent(rEvent); } } if (wxUpdateUIEvent::CanUpdate(this)) @@ -1153,7 +1094,7 @@ void wxWindowOS2::OnIdle( // // Set this window to be the child of 'parent'. // -bool wxWindowOS2::Reparent( wxWindow* pParent) +bool wxWindowOS2::Reparent( wxWindowBase* pParent) { if (!wxWindowBase::Reparent(pParent)) return false; @@ -1170,12 +1111,12 @@ void wxWindowOS2::Update() ::WinUpdateWindow(GetHwnd()); } // end of wxWindowOS2::Update -void wxWindowOS2::Freeze() +void wxWindowOS2::DoFreeze() { ::WinSendMsg(GetHwnd(), WM_VRNDISABLED, (MPARAM)0, (MPARAM)0); } // end of wxWindowOS2::Freeze -void wxWindowOS2::Thaw() +void wxWindowOS2::DoThaw() { ::WinSendMsg(GetHwnd(), WM_VRNENABLED, (MPARAM)TRUE, (MPARAM)0); @@ -1296,7 +1237,10 @@ void wxWindowOS2::DoGetPosition( , int* pY ) const { - HWND hWnd = GetHwnd(); + // + // Return parameters assume wxWidgets coordinate system + // + HWND hWnd; SWP vSwp; POINTL vPoint; wxWindow* pParent = GetParent(); @@ -1306,17 +1250,30 @@ void wxWindowOS2::DoGetPosition( // the WIN32 WinGetRect, but unlike WinGetRect which returns the window // origin position in screen coordinates, WinQueryWindowRect returns it // relative to itself, i.e. (0,0). To get the same under PM we must - // us WinQueryWindowPos. This call, unlike the WIN32 call, however, + // use WinQueryWindowPos. This call, unlike the WIN32 call, however, // returns a position relative to it's parent, so no parent adujstments // are needed under OS/2. Also, windows should be created using - // wxWindow coordinates, i.e 0,0 is the TOP left so vSwp will already - // reflect that. + // wxWindow coordinates, i.e 0,0 is the TOP left. // + if (IsKindOf(CLASSINFO(wxFrame))) + { + wxFrame* pFrame = wxDynamicCast(this, wxFrame); + hWnd = pFrame->GetFrame(); + } + else + hWnd = GetHwnd(); + ::WinQueryWindowPos(hWnd, &vSwp); vPoint.x = vSwp.x; vPoint.y = vSwp.y; + // We need to convert to wxWidgets coordinates + int vHeight; + DoGetSize(NULL,&vHeight); + wxWindow* pWindow = wxDynamicCast(this,wxWindow); + vPoint.y = pWindow->GetOS2ParentHeight(pParent) - vPoint.y - vHeight; + // // We may be faking the client origin. So a window that's really at (0, // 30) may appear (to wxWin apps) to be at (0, 0). @@ -1448,18 +1405,12 @@ void wxWindowOS2::DoMoveWindow( , int nHeight ) { + // + // Input parameters assume wxWidgets coordinate system + // RECTL vRect; wxWindow* pParent = GetParent(); - - /* Due to OS/2's inverted coordinate system, changing the height - of a window requires repositioning all it's children, e.g. if - you want a child of height 100 to be at the top left corner of - the parent you need to position the lower left corner of the - child at (0, (height of parent - 100)), so, obviously, if the - height of the parent changes, the child needs to be repositioned. */ - int nHeightDelta; - GetSize(0, &nHeightDelta); - nHeightDelta = nHeight - nHeightDelta; + HWND hWnd = GetHwnd(); if (pParent && !IsKindOf(CLASSINFO(wxDialog))) { @@ -1489,64 +1440,26 @@ void wxWindowOS2::DoMoveWindow( if (IsKindOf(CLASSINFO(wxFrame))) { RECTL vFRect; - HWND hWndFrame; int nWidthFrameDelta = 0; int nHeightFrameDelta = 0; - int nHeightFrame = 0; - int nWidthFrame = 0; wxFrame* pFrame; pFrame = wxDynamicCast(this, wxFrame); - hWndFrame = pFrame->GetFrame(); - ::WinQueryWindowRect(hWndFrame, &vRect); - ::WinMapWindowPoints(hWndFrame, HWND_DESKTOP, (PPOINTL)&vRect, 2); + hWnd = pFrame->GetFrame(); + ::WinQueryWindowRect(hWnd, &vRect); + ::WinMapWindowPoints(hWnd, HWND_DESKTOP, (PPOINTL)&vRect, 2); vFRect = vRect; - ::WinCalcFrameRect(hWndFrame, &vRect, TRUE); + ::WinCalcFrameRect(hWnd, &vRect, TRUE); nWidthFrameDelta = ((vRect.xLeft - vFRect.xLeft) + (vFRect.xRight - vRect.xRight)); nHeightFrameDelta = ((vRect.yBottom - vFRect.yBottom) + (vFRect.yTop - vRect.yTop)); - nWidthFrame = vFRect.xRight - vFRect.xLeft; - nHeightFrame = vFRect.yTop - vFRect.yBottom; - - if (nWidth == vFRect.xRight - vFRect.xLeft && - nHeight == vFRect.yTop - vFRect.yBottom) - { - // - // In this case the caller is not aware of OS/2's need to size both - // the frame and it's client and is really only moving the window, - // not resizeing it. So move the frame, and back off the sizes - // for a proper client fit. - // - ::WinSetWindowPos( hWndFrame - ,HWND_TOP - ,(LONG)nX - (vRect.xLeft - vFRect.xLeft) - ,(LONG)nY - (vRect.yBottom - vFRect.yBottom) - ,(LONG)0 - ,(LONG)0 - ,SWP_MOVE - ); - nX += (vRect.xLeft - vFRect.xLeft); - nY += (vRect.yBottom - vFRect.yBottom); - nWidth -= nWidthFrameDelta; - nHeight -= nHeightFrameDelta; - } - else - { - if (nWidth > nWidthFrame - nHeightFrameDelta || - nHeight > nHeightFrame - nHeightFrameDelta) - { - ::WinSetWindowPos( hWndFrame - ,HWND_TOP - ,(LONG)nX - (vRect.xLeft - vFRect.xLeft) - ,(LONG)nY - (vRect.yBottom - vFRect.yBottom) - ,(LONG)nWidth + nWidthFrameDelta - ,(LONG)nHeight + nHeightFrameDelta - ,SWP_MOVE | SWP_SIZE - ); - } - } + // Input values refer to the window position relative to its parent + // which may be the Desktop so we need to calculate + // the new frame values to keep the wxWidgets frame origin constant + nY -= nHeightFrameDelta; + nWidth += nWidthFrameDelta; + nHeight += nHeightFrameDelta; } - - ::WinSetWindowPos( GetHwnd() + ::WinSetWindowPos( hWnd ,HWND_TOP ,(LONG)nX ,(LONG)nY @@ -1558,17 +1471,15 @@ void wxWindowOS2::DoMoveWindow( // // Uninitialized // - ::WinQueryWindowPos(GetHwnd(), &m_vWinSwp); + ::WinQueryWindowPos(hWnd, &m_vWinSwp); else { - int nYDiff = m_vWinSwp.cy - nHeight; - // // Handle resizing of scrolled windows. The target or window to - // be scrolled is the owner (gets the scroll notificaitons). The + // be scrolled is the owner (gets the scroll notifications). The // parent is usually the parent frame of the scrolled panel window. // In order to show the scrollbars the target window will be shrunk - // by the size of the scroll bar widths (20) and moved in the X and Y + // by the size of the scroll bar widths and moved in the X and Y // directon. That value will be computed as part of the diff for // moving the children. Everytime the window is sized the // toplevel OnSize is going to resize the panel to fit the client @@ -1577,26 +1488,28 @@ void wxWindowOS2::DoMoveWindow( // which will cause the scrollbars to be displayed via the SetScrollbar // call in CWindow. // - if ( IsKindOf(CLASSINFO(wxGenericScrolledWindow)) || - IsKindOf(CLASSINFO(wxScrolledWindow)) - ) + if (IsKindOf(CLASSINFO(wxScrolledWindow))) { int nAdjustWidth = 0; int nAdjustHeight = 0; + int nHSBHeight = wxSystemSettingsNative::GetMetric(wxSYS_HSCROLL_Y, + this); + int nVSBWidth = wxSystemSettingsNative::GetMetric(wxSYS_VSCROLL_X, + this); SWP vSwpScroll; if (GetScrollBarHorz() == NULLHANDLE || !WinIsWindowShowing(GetScrollBarHorz())) nAdjustHeight = 0L; else - nAdjustHeight = 20L; + nAdjustHeight = nHSBHeight; if (GetScrollBarVert() == NULLHANDLE || !WinIsWindowShowing(GetScrollBarVert())) nAdjustWidth = 0L; else - nAdjustWidth = 20L; - ::WinQueryWindowPos(GetHWND(), &vSwpScroll); - ::WinSetWindowPos( GetHWND() + nAdjustWidth = nVSBWidth; + ::WinQueryWindowPos(hWnd, &vSwpScroll); + ::WinSetWindowPos( hWnd ,HWND_TOP ,vSwpScroll.x ,vSwpScroll.y + nAdjustHeight @@ -1604,19 +1517,9 @@ void wxWindowOS2::DoMoveWindow( ,vSwpScroll.cy - nAdjustHeight ,SWP_MOVE | SWP_SIZE ); - nYDiff -= nAdjustHeight; } - MoveChildren(nYDiff); - ::WinQueryWindowPos(GetHwnd(), &m_vWinSwp); + ::WinQueryWindowPos(hWnd, &m_vWinSwp); } -#if 0 - // FIXME: By my logic, the next line should be needed as it moves child - // windows when resizing the parent (see comment at beginning of - // function). However, this seems to cause lots of problems. At - // least, e.g. the grid sample almost works with this line - // commented out but crashes badly with it. - MoveChildren(nHeightDelta); -#endif } // end of wxWindowOS2::DoMoveWindow // @@ -1635,6 +1538,10 @@ void wxWindowOS2::DoSetSize( int nX, int nHeight, int nSizeFlags ) { + // + // Input & output parameters assume wxWidgets coordinate system + // + // // Get the current size and position... // @@ -1650,12 +1557,7 @@ void wxWindowOS2::DoSetSize( int nX, // // ... and don't do anything (avoiding flicker) if it's already ok // - // - // Must convert Y coords to test for equality under OS/2 - // - int nY2 = nY; - - if (nX == nCurrentX && nY2 == nCurrentY && + if (nX == nCurrentX && nY == nCurrentY && nWidth == nCurrentWidth && nHeight == nCurrentHeight) { return; @@ -1707,55 +1609,20 @@ void wxWindowOS2::DoSetSize( int nX, void wxWindowOS2::DoSetClientSize( int nWidth, int nHeight ) { - POINTL vPoint; - int nActualWidth; - int nActualHeight; - wxWindow* pParent = (wxWindow*)GetParent(); - HWND hParentWnd = (HWND)0; - - if (pParent) - hParentWnd = (HWND)pParent->GetHWND(); - - if (IsKindOf(CLASSINFO(wxFrame))) - { - wxFrame* pFrame = wxDynamicCast(this, wxFrame); - HWND hFrame = pFrame->GetFrame(); - RECTL vRect; - RECTL vRect2; - RECTL vRect3; - - ::WinQueryWindowRect(GetHwnd(), &vRect2); - ::WinQueryWindowRect(hFrame, &vRect); - ::WinQueryWindowRect(hParentWnd, &vRect3); - nActualWidth = vRect2.xRight - vRect2.xLeft - vRect.xRight + nWidth; - nActualHeight = vRect2.yTop - vRect2.yBottom - vRect.yTop + nHeight; - - vPoint.x = vRect2.xLeft; - vPoint.y = vRect2.yBottom; - if (pParent) - { - vPoint.x -= vRect3.xLeft; - vPoint.y -= vRect3.yBottom; - } - } - else - { - int nX; - int nY; + // + // nX & nY assume wxWidgets coordinate system + // + int nX; + int nY; - GetPosition(&nX, &nY); - nActualWidth = nWidth; - nActualHeight = nHeight; + GetPosition(&nX, &nY); - vPoint.x = nX; - vPoint.y = nY; - } - DoMoveWindow( vPoint.x, vPoint.y, nActualWidth, nActualHeight ); + DoMoveWindow( nX, nY, nWidth, nHeight ); wxSize size( nWidth, nHeight ); wxSizeEvent vEvent( size, m_windowId ); vEvent.SetEventObject(this); - GetEventHandler()->ProcessEvent(vEvent); + HandleWindowEvent(vEvent); } // end of wxWindowOS2::DoSetClientSize // --------------------------------------------------------------------------- @@ -1808,25 +1675,22 @@ void wxWindowOS2::GetTextExtent( const wxString& rString, int l; FONTMETRICS vFM; // metrics structure BOOL bRc = FALSE; - char* pStr; HPS hPS; hPS = ::WinGetPS(GetHwnd()); - l = rString.Length(); + l = rString.length(); if (l > 0L) { - pStr = (PCH)rString.c_str(); - // // In world coordinates. // - bRc = ::GpiQueryTextBox( hPS - ,l - ,pStr - ,TXTBOX_COUNT // return maximum information - ,avPoint // array of coordinates points - ); + bRc = ::GpiQueryTextBox( hPS, + l, + (char*) rString.wx_str(), + TXTBOX_COUNT,// return maximum information + avPoint // array of coordinates points + ); if (bRc) { vPtMin.x = avPoint[0].x; @@ -1914,9 +1778,7 @@ bool wxWindowOS2::IsMouseInWindow() const // --------------------------------------------------------------------------- // #if wxUSE_MENUS_NATIVE -bool wxWindowOS2::DoPopupMenu( wxMenu* pMenu, - int nX, - int nY ) +bool wxWindowOS2::DoPopupMenu( wxMenu* pMenu, int nX, int nY ) { HWND hWndOwner = GetHwnd(); HWND hWndParent = GetHwnd(); @@ -1924,10 +1786,6 @@ bool wxWindowOS2::DoPopupMenu( wxMenu* pMenu, bool bIsWaiting = true; int nHeight; - // Protect against recursion - if (wxCurrentPopupMenu) - return false; - pMenu->SetInvokingWindow(this); pMenu->UpdateUI(); @@ -1944,7 +1802,6 @@ bool wxWindowOS2::DoPopupMenu( wxMenu* pMenu, DoGetSize(0,&nHeight); nY = nHeight - nY; } - wxCurrentPopupMenu = pMenu; ::WinPopupMenu( hWndParent ,hWndOwner @@ -1965,7 +1822,6 @@ bool wxWindowOS2::DoPopupMenu( wxMenu* pMenu, ::WinDispatchMsg(vHabmain, (PQMSG)&vMsg); } - wxCurrentPopupMenu = NULL; pMenu->SetInvokingWindow(NULL); return true; } // end of wxWindowOS2::DoPopupMenu @@ -2098,9 +1954,13 @@ bool wxWindowOS2::OS2ProcessMessage( WXMSG* pMsg ) } else { - wxButton* pBtn = wxDynamicCast( GetDefaultItem() - ,wxButton - ); + wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); + wxButton* pBtn = NULL; + + if (tlw) + { + pBtn = wxDynamicCast(tlw->GetDefaultItem(), wxButton); + } if (pBtn && pBtn->IsEnabled()) { @@ -2137,7 +1997,7 @@ bool wxWindowOS2::OS2ProcessMessage( WXMSG* pMsg ) vEvent.SetWindowChange(bWindowChange); vEvent.SetEventObject(this); - if (GetEventHandler()->ProcessEvent(vEvent)) + if (HandleWindowEvent(vEvent)) { wxButton* pBtn = wxDynamicCast(FindFocus(), wxButton); @@ -2469,9 +2329,6 @@ MRESULT wxWindowOS2::OS2WindowProc( WXUINT uMsg, case WM_BUTTON3MOTIONEND: case WM_BUTTON3MOTIONSTART: { - if (uMsg == WM_BUTTON1DOWN && AcceptsFocus()) - SetFocus(); - short nX = LOWORD(wParam); short nY = HIWORD(wParam); @@ -2494,7 +2351,7 @@ MRESULT wxWindowOS2::OS2WindowProc( WXUINT uMsg, ); if (!pWin->IsOfStandardClass()) { - if (uMsg == WM_BUTTON1DOWN && pWin->AcceptsFocus() ) + if (uMsg == WM_BUTTON1DOWN && pWin->CanAcceptFocus() ) pWin->SetFocus(); } bProcessed = pWin->HandleMouseEvent( uMsg @@ -2691,7 +2548,7 @@ MRESULT wxWindowOS2::OS2WindowProc( WXUINT uMsg, (pPage->ulPageIdNew > 0L && pPage->ulPageIdCur > 0L)) { wxWindowOS2* pWin = wxFindWinFromHandle(pPage->hwndBook); - wxNotebookEvent vEvent( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED + wxBookCtrlEvent vEvent( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED ,(int)SHORT1FROMMP(wParam) ,(int)pPage->ulPageIdNew ,(int)pPage->ulPageIdCur @@ -2717,6 +2574,7 @@ MRESULT wxWindowOS2::OS2WindowProc( WXUINT uMsg, } break; + case CBN_LBSELECT: case BN_CLICKED: // Dups as LN_SELECT and CBN_LBSELECT { HWND hWnd = ::WinWindowFromID((HWND)GetHwnd(), SHORT1FROMMP(wParam)); @@ -2773,11 +2631,19 @@ MRESULT wxWindowOS2::OS2WindowProc( WXUINT uMsg, ,(WXWORD)SHORT1FROMMP(wParam) ); } + if (pWin->IsKindOf(CLASSINFO(wxChoice))) + { + wxChoice* pChoice = wxDynamicCast(pWin, wxChoice); + + pChoice->OS2Command( (WXUINT)SHORT2FROMMP(wParam) + ,(WXWORD)SHORT1FROMMP(wParam) + ); + } return 0; } // break; - case LN_ENTER: /* dups as CBN_EFCHANGE */ + case LN_ENTER: { HWND hWnd = HWNDFROMMP(lParam); wxWindowOS2* pWin = wxFindWinFromHandle(hWnd); @@ -2981,16 +2847,16 @@ void wxAssociateWinWithHandle( wxCHECK_RET( hWnd != (HWND)NULL, wxT("attempt to add a NULL hWnd to window list ignored") ); - wxWindow* pOldWin = wxFindWinFromHandle((WXHWND) hWnd); if (pOldWin && (pOldWin != pWin)) { - wxString str(pWin->GetClassInfo()->GetClassName()); - - wxLogError( _T("Bug! Found existing HWND %X for new window of class %s") - ,(int)hWnd - ,str.c_str() + wxString Newstr(pWin->GetClassInfo()->GetClassName()); + wxString Oldstr(pOldWin->GetClassInfo()->GetClassName()); + wxLogError( _T("Bug! New window of class %s has same HWND %X as old window of class %s"), + Newstr.c_str(), + (int)hWnd, + Oldstr.c_str() ); } else if (!pOldWin) @@ -3071,6 +2937,7 @@ bool wxWindowOS2::OS2Create( PSZ zClass, long lControlId = 0L; wxWindowCreationHook vHook(this); wxString sClassName((wxChar*)zClass); + wxString sTitle(zTitle ? zTitle : wxEmptyString); OS2GetCreateWindowCoords( rPos ,rSize @@ -3098,8 +2965,8 @@ bool wxWindowOS2::OS2Create( PSZ zClass, sClassName += wxT("NR"); } m_hWnd = (WXHWND)::WinCreateWindow( (HWND)OS2GetParent() - ,(PSZ)sClassName.c_str() - ,(PSZ)(zTitle ? zTitle : wxEmptyString) + ,sClassName.c_str() + ,sTitle.c_str() ,(ULONG)dwStyle ,(LONG)0L ,(LONG)0L @@ -3120,7 +2987,7 @@ bool wxWindowOS2::OS2Create( PSZ zClass, SubclassWin(m_hWnd); SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); - m_backgroundColour.Set(wxString(wxT("GREY"))); + SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE)); LONG lColor = (LONG)m_backgroundColour.GetPixel(); @@ -3141,7 +3008,7 @@ bool wxWindowOS2::OS2Create( PSZ zClass, ,nHeight ); return true; -} // end of WinGuiBase_Window::OS2Create +} // end of wxWindowOS2::OS2Create // =========================================================================== // OS2 PM message handlers @@ -3156,7 +3023,7 @@ bool wxWindowOS2::HandleCreate( WXLPCREATESTRUCT WXUNUSED(vCs), { wxWindowCreateEvent vEvent((wxWindow*)this); - (void)GetEventHandler()->ProcessEvent(vEvent); + (void)HandleWindowEvent(vEvent); *pbMayCreate = true; return true; } // end of wxWindowOS2::HandleCreate @@ -3165,7 +3032,7 @@ bool wxWindowOS2::HandleDestroy() { wxWindowDestroyEvent vEvent((wxWindow*)this); vEvent.SetId(GetId()); - (void)GetEventHandler()->ProcessEvent(vEvent); + (void)HandleWindowEvent(vEvent); // // Delete our drop target if we've got one @@ -3204,7 +3071,7 @@ bool wxWindowOS2::HandleActivate( ,m_windowId ); vEvent.SetEventObject(this); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandleActivate bool wxWindowOS2::HandleSetFocus( WXHWND WXUNUSED(hWnd) ) @@ -3214,7 +3081,7 @@ bool wxWindowOS2::HandleSetFocus( WXHWND WXUNUSED(hWnd) ) // purposes that we got it // wxChildFocusEvent vEventFocus((wxWindow *)this); - (void)GetEventHandler()->ProcessEvent(vEventFocus); + (void)HandleWindowEvent(vEventFocus); #if wxUSE_CARET // @@ -3238,7 +3105,7 @@ bool wxWindowOS2::HandleSetFocus( WXHWND WXUNUSED(hWnd) ) wxFocusEvent vEvent(wxEVT_SET_FOCUS, m_windowId); vEvent.SetEventObject(this); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandleSetFocus bool wxWindowOS2::HandleKillFocus( WXHWND hWnd ) @@ -3285,7 +3152,7 @@ bool wxWindowOS2::HandleKillFocus( WXHWND hWnd ) // wxFindWinFromHandle() may return NULL, it is ok // vEvent.SetWindow(wxFindWinFromHandle(hWnd)); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandleKillFocus // --------------------------------------------------------------------------- @@ -3300,7 +3167,7 @@ bool wxWindowOS2::HandleShow( wxShowEvent vEvent(GetId(), bShow); vEvent.SetEventObject(this); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandleShow bool wxWindowOS2::HandleInitDialog( WXHWND WXUNUSED(hWndFocus) ) @@ -3308,7 +3175,7 @@ bool wxWindowOS2::HandleInitDialog( WXHWND WXUNUSED(hWndFocus) ) wxInitDialogEvent vEvent(GetId()); vEvent.SetEventObject(this); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandleInitDialog bool wxWindowOS2::HandleEndDrag(WXWPARAM WXUNUSED(wParam)) @@ -3335,7 +3202,7 @@ bool wxWindowOS2::OS2OnDrawItem( int vId, WXDRAWITEMSTRUCT* pItemStruct ) { #if wxUSE_OWNER_DRAWN - wxDC vDc; + wxClientDC vDc(this); #if wxUSE_MENUS_NATIVE // @@ -3354,8 +3221,10 @@ bool wxWindowOS2::OS2OnDrawItem( int vId, ,pMeasureStruct->rclItem.xRight - pMeasureStruct->rclItem.xLeft ,pMeasureStruct->rclItem.yTop - pMeasureStruct->rclItem.yBottom ); - vDc.SetHDC( hDC, false ); - vDc.SetHPS( pMeasureStruct->hps ); + + wxPMDCImpl *impl = (wxPMDCImpl*) vDc.GetImpl(); + impl->SetHDC( hDC, false ); + impl->SetHPS( pMeasureStruct->hps ); // // Load the wxWidgets Pallete and set to RGB mode // @@ -3369,7 +3238,7 @@ bool wxWindowOS2::OS2OnDrawItem( int vId, { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError(_T("Unable to set current color table. Error: %s\n"), sError.c_str()); + wxLogError(_T("Unable to set current color table (1). Error: %s\n"), sError.c_str()); } // // Set the color table to RGB mode @@ -3384,7 +3253,7 @@ bool wxWindowOS2::OS2OnDrawItem( int vId, { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError(_T("Unable to set current color table. Error: %s\n"), sError.c_str()); + wxLogError(_T("Unable to set current color table (2). Error: %s\n"), sError.c_str()); } wxCHECK( pMenuItem->IsKindOf(CLASSINFO(wxMenuItem)), FALSE ); @@ -3545,7 +3414,7 @@ bool wxWindowOS2::HandleSysColorChange() wxSysColourChangedEvent vEvent; vEvent.SetEventObject(this); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandleSysColorChange bool wxWindowOS2::HandleCtlColor( WXHBRUSH* WXUNUSED(phBrush) ) @@ -3578,7 +3447,7 @@ bool wxWindowOS2::HandlePaletteChanged() vEvent.SetEventObject(this); vEvent.SetChangedWindow(wxFindWinFromHandle(hWndPalChange)); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandlePaletteChanged // @@ -3602,7 +3471,7 @@ void wxWindowOS2::OnSysColourChanged( wxSysColourChangedEvent vEvent; rEvent.SetEventObject(pWin); - pWin->GetEventHandler()->ProcessEvent(vEvent); + pWin->HandleWindowEvent(vEvent); } node = node->GetNext(); } @@ -3616,7 +3485,7 @@ void wxWindow::OnPaint ( wxPaintEvent& rEvent ) { - HDC hDC = (HDC)wxPaintDC::FindDCInCache((wxWindow*) rEvent.GetEventObject()); + HDC hDC = (HDC)wxPaintDCImpl::FindDCInCache((wxWindow*) rEvent.GetEventObject()); if (hDC != 0) { @@ -3644,15 +3513,10 @@ bool wxWindowOS2::HandlePaint() wxLogLastError(wxT("CreateRectRgn")); return false; } - // Get all the rectangles from the region, convert the individual // rectangles to "the other" coordinate system and reassemble a // region from the rectangles, to be feed into m_updateRegion. // - // FIXME: This is a bad hack since OS/2 API specifies that rectangles - // passed into GpiSetRegion must not have Bottom > Top, - // however, at first sight, it _seems_ to work nonetheless. - // RGNRECT vRgnData; PRECTL pUpdateRects = NULL; vRgnData.ulDirection = RECTDIR_LFRT_TOPBOT; @@ -3682,18 +3546,17 @@ bool wxWindowOS2::HandlePaint() { int rectHeight; rectHeight = pUpdateRects[i].yTop - pUpdateRects[i].yBottom; - pUpdateRects[i].yTop = height - pUpdateRects[i].yTop; - pUpdateRects[i].yBottom = pUpdateRects[i].yTop + rectHeight; + pUpdateRects[i].yBottom = height - pUpdateRects[i].yTop; + pUpdateRects[i].yTop = pUpdateRects[i].yBottom + rectHeight; } ::GpiSetRegion(hPS, hRgn, vRgnData.crc, pUpdateRects); delete [] pUpdateRects; } } - m_updateRegion = wxRegion(hRgn, hPS); vEvent.SetEventObject(this); - bProcessed = GetEventHandler()->ProcessEvent(vEvent); + bProcessed = HandleWindowEvent(vEvent); if (!bProcessed && IsKindOf(CLASSINFO(wxPanel)) && @@ -3807,31 +3670,28 @@ bool wxWindowOS2::HandleEraseBkgnd( WXHDC hDC ) if (vSwp.fl & SWP_MINIMIZE) return true; - wxDC vDC; - - vDC.m_hPS = (HPS)hDC; // this is really a PS - vDC.SetWindow((wxWindow*)this); - vDC.BeginDrawing(); + wxClientDC vDC(this); + wxPMDCImpl *impl = (wxPMDCImpl*) vDC.GetImpl(); + impl->SetHDC(hDC); + impl->SetHPS((HPS)hDC); // this is really a PS wxEraseEvent vEvent(m_windowId, &vDC); vEvent.SetEventObject(this); - rc = GetEventHandler()->ProcessEvent(vEvent); + rc = HandleWindowEvent(vEvent); - vDC.EndDrawing(); - vDC.m_hPS = NULLHANDLE; + impl->SetHPS(NULLHANDLE); return true; } // end of wxWindowOS2::HandleEraseBkgnd -void wxWindowOS2::OnEraseBackground( - wxEraseEvent& rEvent -) +void wxWindowOS2::OnEraseBackground(wxEraseEvent& rEvent) { - RECTL vRect; - HPS hPS = rEvent.m_dc->m_hPS; - APIRET rc; - LONG lColor = m_backgroundColour.GetPixel(); + RECTL vRect; + wxPMDCImpl *impl = (wxPMDCImpl*) rEvent.GetDC()->GetImpl(); + HPS hPS = impl->GetHPS(); + APIRET rc; + LONG lColor = m_backgroundColour.GetPixel(); rc = ::WinQueryWindowRect(GetHwnd(), &vRect); rc = ::WinFillRect(hPS, &vRect, lColor); @@ -3846,7 +3706,7 @@ bool wxWindowOS2::HandleMinimize() wxIconizeEvent vEvent(m_windowId); vEvent.SetEventObject(this); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandleMinimize bool wxWindowOS2::HandleMaximize() @@ -3854,7 +3714,7 @@ bool wxWindowOS2::HandleMaximize() wxMaximizeEvent vEvent(m_windowId); vEvent.SetEventObject(this); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandleMaximize bool wxWindowOS2::HandleMove( int nX, int nY ) @@ -3863,7 +3723,7 @@ bool wxWindowOS2::HandleMove( int nX, int nY ) wxMoveEvent vEvent(pt, m_windowId); vEvent.SetEventObject(this); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandleMove bool wxWindowOS2::HandleSize( int nWidth, @@ -3874,7 +3734,7 @@ bool wxWindowOS2::HandleSize( int nWidth, wxSizeEvent vEvent(sz, m_windowId); vEvent.SetEventObject(this); - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::HandleSize bool wxWindowOS2::HandleGetMinMaxInfo( PSWP pSwp ) @@ -3884,25 +3744,15 @@ bool wxWindowOS2::HandleGetMinMaxInfo( PSWP pSwp ) switch(pSwp->fl) { case SWP_MAXIMIZE: -#if !(defined(__WATCOMC__) && __WATCOMC__ < 1240 ) -// Open Watcom 1.3 had incomplete headers -// that's reported and should be fixed for OW 1.4 ::WinGetMaxPosition(GetHwnd(), pSwp); m_maxWidth = pSwp->cx; m_maxHeight = pSwp->cy; -#endif break; case SWP_MINIMIZE: -#if !(defined(__WATCOMC__) && __WATCOMC__ < 1240 ) -// Open Watcom 1.3 had incomplete headers -// that's reported and should be fixed for OW 1.4 ::WinGetMinPosition(GetHwnd(), pSwp, &vPoint); m_minWidth = pSwp->cx; m_minHeight = pSwp->cy; -#else - wxUnusedVar(vPoint); -#endif break; default: @@ -3961,7 +3811,7 @@ bool wxWindowOS2::HandleSysCommand( WXWPARAM wParam, // --------------------------------------------------------------------------- // mouse events // --------------------------------------------------------------------------- -//TODO!!! check against MSW +//TODO: check against MSW void wxWindowOS2::InitMouseEvent( wxMouseEvent& rEvent , int nX @@ -3977,12 +3827,9 @@ void wxWindowOS2::InitMouseEvent( rEvent.m_shiftDown = ((uFlags & KC_SHIFT) != 0); rEvent.m_controlDown = ((uFlags & KC_CTRL) != 0); rEvent.m_altDown = ((uFlags & KC_ALT) != 0); - rEvent.m_leftDown = (::WinGetKeyState(HWND_DESKTOP, VK_BUTTON1) & - 0x8000) != 0; - rEvent.m_middleDown = (::WinGetKeyState(HWND_DESKTOP, VK_BUTTON3) & - 0x8000) != 0; - rEvent.m_rightDown = (::WinGetKeyState(HWND_DESKTOP, VK_BUTTON2) & - 0x8000) != 0; + rEvent.m_leftDown = IsKeyDown(VK_BUTTON1); + rEvent.m_middleDown = IsKeyDown(VK_BUTTON3); + rEvent.m_rightDown = IsKeyDown(VK_BUTTON2); rEvent.SetTimestamp(s_currentMsg.time); rEvent.SetEventObject(this); rEvent.SetId(GetId()); @@ -4032,7 +3879,7 @@ bool wxWindowOS2::HandleMouseEvent( WXUINT uMsg, ,uFlags ); - bProcessed = GetEventHandler()->ProcessEvent(vEvent); + bProcessed = HandleWindowEvent(vEvent); if (!bProcessed) { HPOINTER hCursor = (HPOINTER)GetCursor().GetHCURSOR(); @@ -4066,7 +3913,7 @@ bool wxWindowOS2::HandleMouseMove( int nX, ,uFlags ); - (void)GetEventHandler()->ProcessEvent(vEvent); + (void)HandleWindowEvent(vEvent); } return HandleMouseEvent( WM_MOUSEMOVE ,nX @@ -4188,7 +4035,7 @@ bool wxWindowOS2::HandleChar( WXWPARAM WXUNUSED(wParam), vEvent.m_controlDown = true; } - return (GetEventHandler()->ProcessEvent(vEvent)); + return (HandleWindowEvent(vEvent)); } bool wxWindowOS2::HandleKeyDown( WXWPARAM wParam, @@ -4212,7 +4059,7 @@ bool wxWindowOS2::HandleKeyDown( WXWPARAM wParam, ,(MPARAM)wParam )); - if (GetEventHandler()->ProcessEvent(vEvent)) + if (HandleWindowEvent(vEvent)) { return true; } @@ -4241,7 +4088,7 @@ bool wxWindowOS2::HandleKeyUp( WXWPARAM wParam, ,(MPARAM)wParam )); - if (GetEventHandler()->ProcessEvent(vEvent)) + if (HandleWindowEvent(vEvent)) return true; } return false; @@ -4307,91 +4154,12 @@ bool wxWindowOS2::OS2OnScroll( int nOrientation, default: return false; } - return GetEventHandler()->ProcessEvent(vEvent); + return HandleWindowEvent(vEvent); } // end of wxWindowOS2::OS2OnScroll -void wxWindowOS2::MoveChildren( - int nDiff -) -{ - // - // We want to handle top levels ourself, manually - // - if (!IsTopLevel() && GetAutoLayout()) - { - Layout(); - } - else - { - SWP vSwp; - - for (wxWindowList::compatibility_iterator node = GetChildren().GetFirst(); - node; - node = node->GetNext()) - { - wxWindow* pWin = node->GetData(); - - ::WinQueryWindowPos( GetHwndOf(pWin) - ,&vSwp - ); - // Actually, only move children that already are placed on the - // frame, not ones which are still at wxDefaultCoord. - if (vSwp.y == wxDefaultCoord) - continue; - if (pWin->IsKindOf(CLASSINFO(wxControl))) - { - wxControl* pCtrl; - - // - // Must deal with controls that have margins like ENTRYFIELD. The SWP - // struct of such a control will have and origin offset from its intended - // position by the width of the margins. - // - pCtrl = wxDynamicCast(pWin, wxControl); - vSwp.y -= pCtrl->GetYComp(); - vSwp.x -= pCtrl->GetXComp(); - } - ::WinSetWindowPos( GetHwndOf(pWin) - ,HWND_TOP - ,vSwp.x - ,vSwp.y - nDiff - ,vSwp.cx - ,vSwp.cy - ,SWP_MOVE - ); - ::WinQueryWindowPos(GetHwndOf(pWin), pWin->GetSwp()); - if (pWin->IsKindOf(CLASSINFO(wxRadioBox))) - { - wxRadioBox* pRadioBox; - - pRadioBox = wxDynamicCast(pWin, wxRadioBox); - pRadioBox->AdjustButtons( (int)vSwp.x - ,(int)vSwp.y - nDiff - ,(int)vSwp.cx - ,(int)vSwp.cy - ,pRadioBox->GetSizeFlags() - ); - } - if (pWin->IsKindOf(CLASSINFO(wxSlider))) - { - wxSlider* pSlider; - - pSlider = wxDynamicCast(pWin, wxSlider); - pSlider->AdjustSubControls( (int)vSwp.x - ,(int)vSwp.y - nDiff - ,(int)vSwp.cx - ,(int)vSwp.cy - ,(int)pSlider->GetSizeFlags() - ); - } - } - } - Refresh(); -} // end of wxWindowOS2::MoveChildren - // // Getting the Y position for a window, like a control, is a real -// pain. There are three sitatuions we must deal with in determining +// pain. There are three situations we must deal with in determining // the OS2 to wxWidgets Y coordinate. // // 1) The controls are created in a dialog. @@ -4422,11 +4190,13 @@ void wxWindowOS2::MoveChildren( // int wxWindowOS2::GetOS2ParentHeight( wxWindowOS2* pParent ) { + if (pParent) + { // // Case 1 // - if (pParent->IsKindOf(CLASSINFO(wxDialog))) - return(pParent->GetClientSize().y); + if (pParent->IsKindOf(CLASSINFO(wxDialog))) + return(pParent->GetClientSize().y); // // Case 2 -- if we are one of the separately built standard Frame @@ -4434,40 +4204,43 @@ int wxWindowOS2::GetOS2ParentHeight( wxWindowOS2* pParent ) // use the frame, itself, for positioning. Otherwise we are // child window and want to use the Frame's client. // - else if (pParent->IsKindOf(CLASSINFO(wxFrame))) - { - if (IsKindOf(CLASSINFO(wxStatusBar)) || - IsKindOf(CLASSINFO(wxMenuBar)) || - IsKindOf(CLASSINFO(wxToolBar)) - ) + else if (pParent->IsKindOf(CLASSINFO(wxFrame))) { - if (IsKindOf(CLASSINFO(wxToolBar))) + if (IsKindOf(CLASSINFO(wxStatusBar)) || + IsKindOf(CLASSINFO(wxMenuBar)) || + IsKindOf(CLASSINFO(wxToolBar)) + ) { - wxFrame* pFrame = wxDynamicCast(GetParent(), wxFrame); + if (IsKindOf(CLASSINFO(wxToolBar))) + { + wxFrame* pFrame = wxDynamicCast(GetParent(), wxFrame); - if (pFrame->GetToolBar() == this) - return(pParent->GetSize().y); + if (pFrame->GetToolBar() == this) + return(pParent->GetSize().y); + else + return(pParent->GetClientSize().y); + } else - return(pParent->GetClientSize().y); + return(pParent->GetSize().y); } else - return(pParent->GetSize().y); + return(pParent->GetClientSize().y); } + // + // Case -- this is for any window that is the sole child of a Frame. + // The grandparent must exist and it must be of type CFrame + // and it's height must be different. Otherwise the standard + // applies. + // else return(pParent->GetClientSize().y); } - // - // Case -- this is for any window that is the sole child of a Frame. - // The grandparent must exist and it must be of type CFrame - // and it's height must be different. Otherwise the standard - // applies. - // - // else - // { - - return(pParent->GetClientSize().y); - - // } + else // We must be a child of the screen + { + int nHeight; + wxDisplaySize(NULL,&nHeight); + return(nHeight); + } } // end of wxWindowOS2::GetOS2ParentHeight // @@ -4541,8 +4314,8 @@ int wxCharCodeOS2ToWX( case VK_CTRL: nId = WXK_CONTROL; break; case VK_PAUSE: nId = WXK_PAUSE; break; case VK_SPACE: nId = WXK_SPACE; break; - case VK_PAGEUP: nId = WXK_PRIOR; break; - case VK_PAGEDOWN: nId = WXK_NEXT; break; + case VK_PAGEUP: nId = WXK_PAGEUP; break; + case VK_PAGEDOWN: nId = WXK_PAGEDOWN; break; case VK_ESC: nId = WXK_ESCAPE; break; case VK_END: nId = WXK_END; break; case VK_HOME : nId = WXK_HOME; break; @@ -4604,15 +4377,16 @@ int wxCharCodeWXToOS2( int nId, { int nKeySym = 0; - *bIsVirtual = true; + if ( bIsVirtual ) + *bIsVirtual = true; switch (nId) { case WXK_CLEAR: nKeySym = VK_CLEAR; break; case WXK_SHIFT: nKeySym = VK_SHIFT; break; case WXK_CONTROL: nKeySym = VK_CTRL; break; case WXK_PAUSE: nKeySym = VK_PAUSE; break; - case WXK_PRIOR: nKeySym = VK_PAGEUP; break; - case WXK_NEXT : nKeySym = VK_PAGEDOWN; break; + case WXK_PAGEUP: nKeySym = VK_PAGEUP; break; + case WXK_PAGEDOWN: nKeySym = VK_PAGEDOWN; break; case WXK_END: nKeySym = VK_END; break; case WXK_HOME : nKeySym = VK_HOME; break; case WXK_LEFT : nKeySym = VK_LEFT; break; @@ -4650,7 +4424,8 @@ int wxCharCodeWXToOS2( int nId, case WXK_SCROLL: nKeySym = VK_SCRLLOCK; break; default: { - *bIsVirtual = false; + if ( bIsVirtual ) + *bIsVirtual = false; nKeySym = nId; break; } @@ -4658,6 +4433,29 @@ int wxCharCodeWXToOS2( int nId, return nKeySym; } // end of wxCharCodeWXToOS2 + +bool wxGetKeyState(wxKeyCode key) +{ + wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key != + WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons")); + + const LONG vk = wxCharCodeWXToOS2(key); + // if the requested key is a LED key, return true if the led is pressed + if ( key == WXK_NUMLOCK || key == WXK_CAPITAL || key == WXK_SCROLL ) + { + // low order bit means LED is highlighted and high order one means the + // key is down; for compatibility with the other ports return true if + // either one is set + return ::WinGetKeyState(HWND_DESKTOP, vk) != 0; + + } + else // normal key + { + return IsKeyDown(vk); + } +} + + wxWindow* wxGetActiveWindow() { HWND hWnd = ::WinQueryActiveWindow(HWND_DESKTOP); @@ -4670,464 +4468,464 @@ wxWindow* wxGetActiveWindow() } // end of wxGetActiveWindow #ifdef __WXDEBUG__ -const char* wxGetMessageName( int nMessage ) +const wxChar* wxGetMessageName( int nMessage ) { switch (nMessage) { - case 0x0000: return "WM_NULL"; - case 0x0001: return "WM_CREATE"; - case 0x0002: return "WM_DESTROY"; - case 0x0004: return "WM_ENABLE"; - case 0x0005: return "WM_SHOW"; - case 0x0006: return "WM_MOVE"; - case 0x0007: return "WM_SIZE"; - case 0x0008: return "WM_ADJUSTWINDOWPOS"; - case 0x0009: return "WM_CALCVALIDRECTS"; - case 0x000A: return "WM_SETWINDOWPARAMS"; - case 0x000B: return "WM_QUERYWINDOWPARAMS"; - case 0x000C: return "WM_HITTEST"; - case 0x000D: return "WM_ACTIVATE"; - case 0x000F: return "WM_SETFOCUS"; - case 0x0010: return "WM_SETSELECTION"; - case 0x0011: return "WM_PPAINT"; - case 0x0012: return "WM_PSETFOCUS"; - case 0x0013: return "WM_PSYSCOLORCHANGE"; - case 0x0014: return "WM_PSIZE"; - case 0x0015: return "WM_PACTIVATE"; - case 0x0016: return "WM_PCONTROL"; - case 0x0020: return "WM_COMMAND"; - case 0x0021: return "WM_SYSCOMMAND"; - case 0x0022: return "WM_HELP"; - case 0x0023: return "WM_PAINT"; - case 0x0024: return "WM_TIMER"; - case 0x0025: return "WM_SEM1"; - case 0x0026: return "WM_SEM2"; - case 0x0027: return "WM_SEM3"; - case 0x0028: return "WM_SEM4"; - case 0x0029: return "WM_CLOSE"; - case 0x002A: return "WM_QUIT"; - case 0x002B: return "WM_SYSCOLORCHANGE"; - case 0x002D: return "WM_SYSVALUECHANGE"; - case 0x002E: return "WM_APPTERMINATENOTIFY"; - case 0x002F: return "WM_PRESPARAMCHANGED"; + case 0x0000: return wxT("WM_NULL"); + case 0x0001: return wxT("WM_CREATE"); + case 0x0002: return wxT("WM_DESTROY"); + case 0x0004: return wxT("WM_ENABLE"); + case 0x0005: return wxT("WM_SHOW"); + case 0x0006: return wxT("WM_MOVE"); + case 0x0007: return wxT("WM_SIZE"); + case 0x0008: return wxT("WM_ADJUSTWINDOWPOS"); + case 0x0009: return wxT("WM_CALCVALIDRECTS"); + case 0x000A: return wxT("WM_SETWINDOWPARAMS"); + case 0x000B: return wxT("WM_QUERYWINDOWPARAMS"); + case 0x000C: return wxT("WM_HITTEST"); + case 0x000D: return wxT("WM_ACTIVATE"); + case 0x000F: return wxT("WM_SETFOCUS"); + case 0x0010: return wxT("WM_SETSELECTION"); + case 0x0011: return wxT("WM_PPAINT"); + case 0x0012: return wxT("WM_PSETFOCUS"); + case 0x0013: return wxT("WM_PSYSCOLORCHANGE"); + case 0x0014: return wxT("WM_PSIZE"); + case 0x0015: return wxT("WM_PACTIVATE"); + case 0x0016: return wxT("WM_PCONTROL"); + case 0x0020: return wxT("WM_COMMAND"); + case 0x0021: return wxT("WM_SYSCOMMAND"); + case 0x0022: return wxT("WM_HELP"); + case 0x0023: return wxT("WM_PAINT"); + case 0x0024: return wxT("WM_TIMER"); + case 0x0025: return wxT("WM_SEM1"); + case 0x0026: return wxT("WM_SEM2"); + case 0x0027: return wxT("WM_SEM3"); + case 0x0028: return wxT("WM_SEM4"); + case 0x0029: return wxT("WM_CLOSE"); + case 0x002A: return wxT("WM_QUIT"); + case 0x002B: return wxT("WM_SYSCOLORCHANGE"); + case 0x002D: return wxT("WM_SYSVALUECHANGE"); + case 0x002E: return wxT("WM_APPTERMINATENOTIFY"); + case 0x002F: return wxT("WM_PRESPARAMCHANGED"); // Control notification messages - case 0x0030: return "WM_CONTROL"; - case 0x0031: return "WM_VSCROLL"; - case 0x0032: return "WM_HSCROLL"; - case 0x0033: return "WM_INITMENU"; - case 0x0034: return "WM_MENUSELECT"; - case 0x0035: return "WM_MENUSEND"; - case 0x0036: return "WM_DRAWITEM"; - case 0x0037: return "WM_MEASUREITEM"; - case 0x0038: return "WM_CONTROLPOINTER"; - case 0x003A: return "WM_QUERYDLGCODE"; - case 0x003B: return "WM_INITDLG"; - case 0x003C: return "WM_SUBSTITUTESTRING"; - case 0x003D: return "WM_MATCHMNEMONIC"; - case 0x003E: return "WM_SAVEAPPLICATION"; - case 0x0129: return "WM_CTLCOLORCHANGE"; - case 0x0130: return "WM_QUERYCTLTYPE"; + case 0x0030: return wxT("WM_CONTROL"); + case 0x0031: return wxT("WM_VSCROLL"); + case 0x0032: return wxT("WM_HSCROLL"); + case 0x0033: return wxT("WM_INITMENU"); + case 0x0034: return wxT("WM_MENUSELECT"); + case 0x0035: return wxT("WM_MENUSEND"); + case 0x0036: return wxT("WM_DRAWITEM"); + case 0x0037: return wxT("WM_MEASUREITEM"); + case 0x0038: return wxT("WM_CONTROLPOINTER"); + case 0x003A: return wxT("WM_QUERYDLGCODE"); + case 0x003B: return wxT("WM_INITDLG"); + case 0x003C: return wxT("WM_SUBSTITUTESTRING"); + case 0x003D: return wxT("WM_MATCHMNEMONIC"); + case 0x003E: return wxT("WM_SAVEAPPLICATION"); + case 0x0129: return wxT("WM_CTLCOLORCHANGE"); + case 0x0130: return wxT("WM_QUERYCTLTYPE"); // Frame messages - case 0x0040: return "WM_FLASHWINDOW"; - case 0x0041: return "WM_FORMATFRAME"; - case 0x0042: return "WM_UPDATEFRAME"; - case 0x0043: return "WM_FOCUSCHANGE"; - case 0x0044: return "WM_SETBORDERSIZE"; - case 0x0045: return "WM_TRACKFRAME"; - case 0x0046: return "WM_MINMAXFRAME"; - case 0x0047: return "WM_SETICON"; - case 0x0048: return "WM_QUERYICON"; - case 0x0049: return "WM_SETACCELTABLE"; - case 0x004A: return "WM_QUERYACCELTABLE"; - case 0x004B: return "WM_TRANSLATEACCEL"; - case 0x004C: return "WM_QUERYTRACKINFO"; - case 0x004D: return "WM_QUERYBORDERSIZE"; - case 0x004E: return "WM_NEXTMENU"; - case 0x004F: return "WM_ERASEBACKGROUND"; - case 0x0050: return "WM_QUERYFRAMEINFO"; - case 0x0051: return "WM_QUERYFOCUSCHAIN"; - case 0x0052: return "WM_OWNERPOSCHANGE"; - case 0x0053: return "WM_CACLFRAMERECT"; - case 0x0055: return "WM_WINDOWPOSCHANGED"; - case 0x0056: return "WM_ADJUSTFRAMEPOS"; - case 0x0059: return "WM_QUERYFRAMECTLCOUNT"; - case 0x005B: return "WM_QUERYHELPINFO"; - case 0x005C: return "WM_SETHELPINFO"; - case 0x005D: return "WM_ERROR"; - case 0x005E: return "WM_REALIZEPALETTE"; + case 0x0040: return wxT("WM_FLASHWINDOW"); + case 0x0041: return wxT("WM_FORMATFRAME"); + case 0x0042: return wxT("WM_UPDATEFRAME"); + case 0x0043: return wxT("WM_FOCUSCHANGE"); + case 0x0044: return wxT("WM_SETBORDERSIZE"); + case 0x0045: return wxT("WM_TRACKFRAME"); + case 0x0046: return wxT("WM_MINMAXFRAME"); + case 0x0047: return wxT("WM_SETICON"); + case 0x0048: return wxT("WM_QUERYICON"); + case 0x0049: return wxT("WM_SETACCELTABLE"); + case 0x004A: return wxT("WM_QUERYACCELTABLE"); + case 0x004B: return wxT("WM_TRANSLATEACCEL"); + case 0x004C: return wxT("WM_QUERYTRACKINFO"); + case 0x004D: return wxT("WM_QUERYBORDERSIZE"); + case 0x004E: return wxT("WM_NEXTMENU"); + case 0x004F: return wxT("WM_ERASEBACKGROUND"); + case 0x0050: return wxT("WM_QUERYFRAMEINFO"); + case 0x0051: return wxT("WM_QUERYFOCUSCHAIN"); + case 0x0052: return wxT("WM_OWNERPOSCHANGE"); + case 0x0053: return wxT("WM_CACLFRAMERECT"); + case 0x0055: return wxT("WM_WINDOWPOSCHANGED"); + case 0x0056: return wxT("WM_ADJUSTFRAMEPOS"); + case 0x0059: return wxT("WM_QUERYFRAMECTLCOUNT"); + case 0x005B: return wxT("WM_QUERYHELPINFO"); + case 0x005C: return wxT("WM_SETHELPINFO"); + case 0x005D: return wxT("WM_ERROR"); + case 0x005E: return wxT("WM_REALIZEPALETTE"); // Clipboard messages - case 0x0060: return "WM_RENDERFMT"; - case 0x0061: return "WM_RENDERALLFMTS"; - case 0x0062: return "WM_DESTROYCLIPBOARD"; - case 0x0063: return "WM_PAINTCLIPBOARD"; - case 0x0064: return "WM_SIZECLIPBOARD"; - case 0x0065: return "WM_HSCROLLCLIPBOARD"; - case 0x0066: return "WM_VSCROLLCLIPBOARD"; - case 0x0067: return "WM_DRAWCLIPBOARD"; + case 0x0060: return wxT("WM_RENDERFMT"); + case 0x0061: return wxT("WM_RENDERALLFMTS"); + case 0x0062: return wxT("WM_DESTROYCLIPBOARD"); + case 0x0063: return wxT("WM_PAINTCLIPBOARD"); + case 0x0064: return wxT("WM_SIZECLIPBOARD"); + case 0x0065: return wxT("WM_HSCROLLCLIPBOARD"); + case 0x0066: return wxT("WM_VSCROLLCLIPBOARD"); + case 0x0067: return wxT("WM_DRAWCLIPBOARD"); // mouse messages - case 0x0070: return "WM_MOUSEMOVE"; - case 0x0071: return "WM_BUTTON1DOWN"; - case 0x0072: return "WM_BUTTON1UP"; - case 0x0073: return "WM_BUTTON1DBLCLK"; - case 0x0074: return "WM_BUTTON2DOWN"; - case 0x0075: return "WM_BUTTON2UP"; - case 0x0076: return "WM_BUTTON2DBLCLK"; - case 0x0077: return "WM_BUTTON3DOWN"; - case 0x0078: return "WM_BUTTON3UP"; - case 0x0079: return "WM_BUTTON3DBLCLK"; - case 0x007D: return "WM_MOUSEMAP"; - case 0x007E: return "WM_VRNDISABLED"; - case 0x007F: return "WM_VRNENABLED"; - case 0x0410: return "WM_CHORD"; - case 0x0411: return "WM_BUTTON1MOTIONSTART"; - case 0x0412: return "WM_BUTTON1MOTIONEND"; - case 0x0413: return "WM_BUTTON1CLICK"; - case 0x0414: return "WM_BUTTON2MOTIONSTART"; - case 0x0415: return "WM_BUTTON2MOTIONEND"; - case 0x0416: return "WM_BUTTON2CLICK"; - case 0x0417: return "WM_BUTTON3MOTIONSTART"; - case 0x0418: return "WM_BUTTON3MOTIONEND"; - case 0x0419: return "WM_BUTTON3CLICK"; - case 0x0420: return "WM_BEGINDRAG"; - case 0x0421: return "WM_ENDDRAG"; - case 0x0422: return "WM_SINGLESELECT"; - case 0x0423: return "WM_OPEN"; - case 0x0424: return "WM_CONTEXTMENU"; - case 0x0425: return "WM_CONTEXTHELP"; - case 0x0426: return "WM_TEXTEDIT"; - case 0x0427: return "WM_BEGINSELECT"; - case 0x0228: return "WM_ENDSELECT"; - case 0x0429: return "WM_PICKUP"; - case 0x04C0: return "WM_PENFIRST"; - case 0x04FF: return "WM_PENLAST"; - case 0x0500: return "WM_MMPMFIRST"; - case 0x05FF: return "WM_MMPMLAST"; - case 0x0600: return "WM_STDDLGFIRST"; - case 0x06FF: return "WM_STDDLGLAST"; - case 0x0BD0: return "WM_BIDI_FIRST"; - case 0x0BFF: return "WM_BIDI_LAST"; + case 0x0070: return wxT("WM_MOUSEMOVE"); + case 0x0071: return wxT("WM_BUTTON1DOWN"); + case 0x0072: return wxT("WM_BUTTON1UP"); + case 0x0073: return wxT("WM_BUTTON1DBLCLK"); + case 0x0074: return wxT("WM_BUTTON2DOWN"); + case 0x0075: return wxT("WM_BUTTON2UP"); + case 0x0076: return wxT("WM_BUTTON2DBLCLK"); + case 0x0077: return wxT("WM_BUTTON3DOWN"); + case 0x0078: return wxT("WM_BUTTON3UP"); + case 0x0079: return wxT("WM_BUTTON3DBLCLK"); + case 0x007D: return wxT("WM_MOUSEMAP"); + case 0x007E: return wxT("WM_VRNDISABLED"); + case 0x007F: return wxT("WM_VRNENABLED"); + case 0x0410: return wxT("WM_CHORD"); + case 0x0411: return wxT("WM_BUTTON1MOTIONSTART"); + case 0x0412: return wxT("WM_BUTTON1MOTIONEND"); + case 0x0413: return wxT("WM_BUTTON1CLICK"); + case 0x0414: return wxT("WM_BUTTON2MOTIONSTART"); + case 0x0415: return wxT("WM_BUTTON2MOTIONEND"); + case 0x0416: return wxT("WM_BUTTON2CLICK"); + case 0x0417: return wxT("WM_BUTTON3MOTIONSTART"); + case 0x0418: return wxT("WM_BUTTON3MOTIONEND"); + case 0x0419: return wxT("WM_BUTTON3CLICK"); + case 0x0420: return wxT("WM_BEGINDRAG"); + case 0x0421: return wxT("WM_ENDDRAG"); + case 0x0422: return wxT("WM_SINGLESELECT"); + case 0x0423: return wxT("WM_OPEN"); + case 0x0424: return wxT("WM_CONTEXTMENU"); + case 0x0425: return wxT("WM_CONTEXTHELP"); + case 0x0426: return wxT("WM_TEXTEDIT"); + case 0x0427: return wxT("WM_BEGINSELECT"); + case 0x0228: return wxT("WM_ENDSELECT"); + case 0x0429: return wxT("WM_PICKUP"); + case 0x04C0: return wxT("WM_PENFIRST"); + case 0x04FF: return wxT("WM_PENLAST"); + case 0x0500: return wxT("WM_MMPMFIRST"); + case 0x05FF: return wxT("WM_MMPMLAST"); + case 0x0600: return wxT("WM_STDDLGFIRST"); + case 0x06FF: return wxT("WM_STDDLGLAST"); + case 0x0BD0: return wxT("WM_BIDI_FIRST"); + case 0x0BFF: return wxT("WM_BIDI_LAST"); // keyboard input - case 0x007A: return "WM_CHAR"; - case 0x007B: return "WM_VIOCHAR"; + case 0x007A: return wxT("WM_CHAR"); + case 0x007B: return wxT("WM_VIOCHAR"); // DDE messages - case 0x00A0: return "WM_DDE_INITIATE"; - case 0x00A1: return "WM_DDE_REQUEST"; - case 0x00A2: return "WM_DDE_ACK"; - case 0x00A3: return "WM_DDE_DATA"; - case 0x00A4: return "WM_DDE_ADVISE"; - case 0x00A5: return "WM_DDE_UNADVISE"; - case 0x00A6: return "WM_DDE_POKE"; - case 0x00A7: return "WM_DDE_EXECUTE"; - case 0x00A8: return "WM_DDE_TERMINATE"; - case 0x00A9: return "WM_DDE_INITIATEACK"; - case 0x00AF: return "WM_DDE_LAST"; + case 0x00A0: return wxT("WM_DDE_INITIATE"); + case 0x00A1: return wxT("WM_DDE_REQUEST"); + case 0x00A2: return wxT("WM_DDE_ACK"); + case 0x00A3: return wxT("WM_DDE_DATA"); + case 0x00A4: return wxT("WM_DDE_ADVISE"); + case 0x00A5: return wxT("WM_DDE_UNADVISE"); + case 0x00A6: return wxT("WM_DDE_POKE"); + case 0x00A7: return wxT("WM_DDE_EXECUTE"); + case 0x00A8: return wxT("WM_DDE_TERMINATE"); + case 0x00A9: return wxT("WM_DDE_INITIATEACK"); + case 0x00AF: return wxT("WM_DDE_LAST"); // Buttons - case 0x0120: return "BM_CLICK"; - case 0x0121: return "BM_QUERYCHECKINDEX"; - case 0x0122: return "BM_QUERYHILITE"; - case 0x0123: return "BM_SETHILITE"; - case 0x0124: return "BM_QUERYCHECK"; - case 0x0125: return "BM_SETCHECK"; - case 0x0126: return "BM_SETDEFAULT"; - case 0x0128: return "BM_AUTOSIZE"; + case 0x0120: return wxT("BM_CLICK"); + case 0x0121: return wxT("BM_QUERYCHECKINDEX"); + case 0x0122: return wxT("BM_QUERYHILITE"); + case 0x0123: return wxT("BM_SETHILITE"); + case 0x0124: return wxT("BM_QUERYCHECK"); + case 0x0125: return wxT("BM_SETCHECK"); + case 0x0126: return wxT("BM_SETDEFAULT"); + case 0x0128: return wxT("BM_AUTOSIZE"); // Combo boxes - case 0x029A: return "CBID_LIST"; - case 0x029B: return "CBID_EDIT"; - case 0x0170: return "CBM_SHOWLIST"; - case 0x0171: return "CBM_HILITE"; - case 0x0172: return "CBM_ISLISTSHOWING"; + case 0x029A: return wxT("CBID_LIST"); + case 0x029B: return wxT("CBID_EDIT"); + case 0x0170: return wxT("CBM_SHOWLIST"); + case 0x0171: return wxT("CBM_HILITE"); + case 0x0172: return wxT("CBM_ISLISTSHOWING"); // Edit fields - case 0x0140: return "EM_QUERYCHANGED"; - case 0x0141: return "EM_QUERYSEL"; - case 0x0142: return "EM_SETSEL"; - case 0x0143: return "EM_SETTEXTLIMIT"; - case 0x0144: return "EM_CUT"; - case 0x0145: return "EM_COPY"; - case 0x0146: return "EM_CLEAR"; - case 0x0147: return "EM_PASTE"; - case 0x0148: return "EM_QUERYFIRSTCHAR"; - case 0x0149: return "EM_SETFIRSTCHAR"; - case 0x014A: return "EM_QUERYREADONLY"; - case 0x014B: return "EM_SETREADONLY"; - case 0x014C: return "EM_SETINSERTMODE"; + case 0x0140: return wxT("EM_QUERYCHANGED"); + case 0x0141: return wxT("EM_QUERYSEL"); + case 0x0142: return wxT("EM_SETSEL"); + case 0x0143: return wxT("EM_SETTEXTLIMIT"); + case 0x0144: return wxT("EM_CUT"); + case 0x0145: return wxT("EM_COPY"); + case 0x0146: return wxT("EM_CLEAR"); + case 0x0147: return wxT("EM_PASTE"); + case 0x0148: return wxT("EM_QUERYFIRSTCHAR"); + case 0x0149: return wxT("EM_SETFIRSTCHAR"); + case 0x014A: return wxT("EM_QUERYREADONLY"); + case 0x014B: return wxT("EM_SETREADONLY"); + case 0x014C: return wxT("EM_SETINSERTMODE"); // Listboxes - case 0x0160: return "LM_QUERYITEMCOUNT"; - case 0x0161: return "LM_INSERTITEM"; - case 0x0162: return "LM_SETOPENINDEX"; - case 0x0163: return "LM_DELETEITEM"; - case 0x0164: return "LM_SELECTITEM"; - case 0x0165: return "LM_QUERYSELECTION"; - case 0x0166: return "LM_SETITEMTEXT"; - case 0x0167: return "LM_QUERYITEMTEXTLENGTH"; - case 0x0168: return "LM_QUERYITEMTEXT"; - case 0x0169: return "LM_SETITEMHANDLE"; - case 0x016A: return "LM_QUERYITEMHANDLE"; - case 0x016B: return "LM_SEARCHSTRING"; - case 0x016C: return "LM_SETITEMHEIGHT"; - case 0x016D: return "LM_QUERYTOPINDEX"; - case 0x016E: return "LM_DELETEALL"; - case 0x016F: return "LM_INSERTMULITEMS"; - case 0x0660: return "LM_SETITEMWIDTH"; + case 0x0160: return wxT("LM_QUERYITEMCOUNT"); + case 0x0161: return wxT("LM_INSERTITEM"); + case 0x0162: return wxT("LM_SETOPENINDEX"); + case 0x0163: return wxT("LM_DELETEITEM"); + case 0x0164: return wxT("LM_SELECTITEM"); + case 0x0165: return wxT("LM_QUERYSELECTION"); + case 0x0166: return wxT("LM_SETITEMTEXT"); + case 0x0167: return wxT("LM_QUERYITEMTEXTLENGTH"); + case 0x0168: return wxT("LM_QUERYITEMTEXT"); + case 0x0169: return wxT("LM_SETITEMHANDLE"); + case 0x016A: return wxT("LM_QUERYITEMHANDLE"); + case 0x016B: return wxT("LM_SEARCHSTRING"); + case 0x016C: return wxT("LM_SETITEMHEIGHT"); + case 0x016D: return wxT("LM_QUERYTOPINDEX"); + case 0x016E: return wxT("LM_DELETEALL"); + case 0x016F: return wxT("LM_INSERTMULITEMS"); + case 0x0660: return wxT("LM_SETITEMWIDTH"); // Menus - case 0x0180: return "MM_INSERTITEM"; - case 0x0181: return "MM_DELETEITEM"; - case 0x0182: return "MM_QUERYITEM"; - case 0x0183: return "MM_SETITEM"; - case 0x0184: return "MM_QUERYITEMCOUNT"; - case 0x0185: return "MM_STARTMENUMODE"; - case 0x0186: return "MM_ENDMENUMODE"; - case 0x0188: return "MM_REMOVEITEM"; - case 0x0189: return "MM_SELECTITEM"; - case 0x018A: return "MM_QUERYSELITEMID"; - case 0x018B: return "MM_QUERYITEMTEXT"; - case 0x018C: return "MM_QUERYITEMTEXTLENGTH"; - case 0x018D: return "MM_SETITEMHANDLE"; - case 0x018E: return "MM_SETITEMTEXT"; - case 0x018F: return "MM_ITEMPOSITIONFROMID"; - case 0x0190: return "MM_ITEMIDFROMPOSITION"; - case 0x0191: return "MM_QUERYITEMATTR"; - case 0x0192: return "MM_SETITEMATTR"; - case 0x0193: return "MM_ISITEMVALID"; - case 0x0194: return "MM_QUERYITEMRECT"; - case 0x0431: return "MM_QUERYDEFAULTITEMID"; - case 0x0432: return "MM_SETDEFAULTITEMID"; + case 0x0180: return wxT("MM_INSERTITEM"); + case 0x0181: return wxT("MM_DELETEITEM"); + case 0x0182: return wxT("MM_QUERYITEM"); + case 0x0183: return wxT("MM_SETITEM"); + case 0x0184: return wxT("MM_QUERYITEMCOUNT"); + case 0x0185: return wxT("MM_STARTMENUMODE"); + case 0x0186: return wxT("MM_ENDMENUMODE"); + case 0x0188: return wxT("MM_REMOVEITEM"); + case 0x0189: return wxT("MM_SELECTITEM"); + case 0x018A: return wxT("MM_QUERYSELITEMID"); + case 0x018B: return wxT("MM_QUERYITEMTEXT"); + case 0x018C: return wxT("MM_QUERYITEMTEXTLENGTH"); + case 0x018D: return wxT("MM_SETITEMHANDLE"); + case 0x018E: return wxT("MM_SETITEMTEXT"); + case 0x018F: return wxT("MM_ITEMPOSITIONFROMID"); + case 0x0190: return wxT("MM_ITEMIDFROMPOSITION"); + case 0x0191: return wxT("MM_QUERYITEMATTR"); + case 0x0192: return wxT("MM_SETITEMATTR"); + case 0x0193: return wxT("MM_ISITEMVALID"); + case 0x0194: return wxT("MM_QUERYITEMRECT"); + case 0x0431: return wxT("MM_QUERYDEFAULTITEMID"); + case 0x0432: return wxT("MM_SETDEFAULTITEMID"); // Scrollbars - case 0x01A0: return "SBM_SETSCROLLBAR"; - case 0x01A1: return "SBM_SETPOS"; - case 0x01A2: return "SBM_QUERYPOS"; - case 0x01A3: return "SBM_QUERYRANGE"; - case 0x01A6: return "SBM_SETTHUMBSIZE"; + case 0x01A0: return wxT("SBM_SETSCROLLBAR"); + case 0x01A1: return wxT("SBM_SETPOS"); + case 0x01A2: return wxT("SBM_QUERYPOS"); + case 0x01A3: return wxT("SBM_QUERYRANGE"); + case 0x01A6: return wxT("SBM_SETTHUMBSIZE"); // Help messages - case 0x0F00: return "WM_HELPBASE"; - case 0x0FFF: return "WM_HELPTOP"; + case 0x0F00: return wxT("WM_HELPBASE"); + case 0x0FFF: return wxT("WM_HELPTOP"); // Beginning of user defined messages - case 0x1000: return "WM_USER"; + case 0x1000: return wxT("WM_USER"); // wxWidgets user defined types // listview - // case 0x1000 + 0: return "LVM_GETBKCOLOR"; - case 0x1000 + 1: return "LVM_SETBKCOLOR"; - case 0x1000 + 2: return "LVM_GETIMAGELIST"; - case 0x1000 + 3: return "LVM_SETIMAGELIST"; - case 0x1000 + 4: return "LVM_GETITEMCOUNT"; - case 0x1000 + 5: return "LVM_GETITEMA"; - case 0x1000 + 75: return "LVM_GETITEMW"; - case 0x1000 + 6: return "LVM_SETITEMA"; - case 0x1000 + 76: return "LVM_SETITEMW"; - case 0x1000 + 7: return "LVM_INSERTITEMA"; - case 0x1000 + 77: return "LVM_INSERTITEMW"; - case 0x1000 + 8: return "LVM_DELETEITEM"; - case 0x1000 + 9: return "LVM_DELETEALLITEMS"; - case 0x1000 + 10: return "LVM_GETCALLBACKMASK"; - case 0x1000 + 11: return "LVM_SETCALLBACKMASK"; - case 0x1000 + 12: return "LVM_GETNEXTITEM"; - case 0x1000 + 13: return "LVM_FINDITEMA"; - case 0x1000 + 83: return "LVM_FINDITEMW"; - case 0x1000 + 14: return "LVM_GETITEMRECT"; - case 0x1000 + 15: return "LVM_SETITEMPOSITION"; - case 0x1000 + 16: return "LVM_GETITEMPOSITION"; - case 0x1000 + 17: return "LVM_GETSTRINGWIDTHA"; - case 0x1000 + 87: return "LVM_GETSTRINGWIDTHW"; - case 0x1000 + 18: return "LVM_HITTEST"; - case 0x1000 + 19: return "LVM_ENSUREVISIBLE"; - case 0x1000 + 20: return "LVM_SCROLL"; - case 0x1000 + 21: return "LVM_REDRAWITEMS"; - case 0x1000 + 22: return "LVM_ARRANGE"; - case 0x1000 + 23: return "LVM_EDITLABELA"; - case 0x1000 + 118: return "LVM_EDITLABELW"; - case 0x1000 + 24: return "LVM_GETEDITCONTROL"; - case 0x1000 + 25: return "LVM_GETCOLUMNA"; - case 0x1000 + 95: return "LVM_GETCOLUMNW"; - case 0x1000 + 26: return "LVM_SETCOLUMNA"; - case 0x1000 + 96: return "LVM_SETCOLUMNW"; - case 0x1000 + 27: return "LVM_INSERTCOLUMNA"; - case 0x1000 + 97: return "LVM_INSERTCOLUMNW"; - case 0x1000 + 28: return "LVM_DELETECOLUMN"; - case 0x1000 + 29: return "LVM_GETCOLUMNWIDTH"; - case 0x1000 + 30: return "LVM_SETCOLUMNWIDTH"; - case 0x1000 + 31: return "LVM_GETHEADER"; - case 0x1000 + 33: return "LVM_CREATEDRAGIMAGE"; - case 0x1000 + 34: return "LVM_GETVIEWRECT"; - case 0x1000 + 35: return "LVM_GETTEXTCOLOR"; - case 0x1000 + 36: return "LVM_SETTEXTCOLOR"; - case 0x1000 + 37: return "LVM_GETTEXTBKCOLOR"; - case 0x1000 + 38: return "LVM_SETTEXTBKCOLOR"; - case 0x1000 + 39: return "LVM_GETTOPINDEX"; - case 0x1000 + 40: return "LVM_GETCOUNTPERPAGE"; - case 0x1000 + 41: return "LVM_GETORIGIN"; - case 0x1000 + 42: return "LVM_UPDATE"; - case 0x1000 + 43: return "LVM_SETITEMSTATE"; - case 0x1000 + 44: return "LVM_GETITEMSTATE"; - case 0x1000 + 45: return "LVM_GETITEMTEXTA"; - case 0x1000 + 115: return "LVM_GETITEMTEXTW"; - case 0x1000 + 46: return "LVM_SETITEMTEXTA"; - case 0x1000 + 116: return "LVM_SETITEMTEXTW"; - case 0x1000 + 47: return "LVM_SETITEMCOUNT"; - case 0x1000 + 48: return "LVM_SORTITEMS"; - case 0x1000 + 49: return "LVM_SETITEMPOSITION32"; - case 0x1000 + 50: return "LVM_GETSELECTEDCOUNT"; - case 0x1000 + 51: return "LVM_GETITEMSPACING"; - case 0x1000 + 52: return "LVM_GETISEARCHSTRINGA"; - case 0x1000 + 117: return "LVM_GETISEARCHSTRINGW"; - case 0x1000 + 53: return "LVM_SETICONSPACING"; - case 0x1000 + 54: return "LVM_SETEXTENDEDLISTVIEWSTYLE"; - case 0x1000 + 55: return "LVM_GETEXTENDEDLISTVIEWSTYLE"; - case 0x1000 + 56: return "LVM_GETSUBITEMRECT"; - case 0x1000 + 57: return "LVM_SUBITEMHITTEST"; - case 0x1000 + 58: return "LVM_SETCOLUMNORDERARRAY"; - case 0x1000 + 59: return "LVM_GETCOLUMNORDERARRAY"; - case 0x1000 + 60: return "LVM_SETHOTITEM"; - case 0x1000 + 61: return "LVM_GETHOTITEM"; - case 0x1000 + 62: return "LVM_SETHOTCURSOR"; - case 0x1000 + 63: return "LVM_GETHOTCURSOR"; - case 0x1000 + 64: return "LVM_APPROXIMATEVIEWRECT"; - case 0x1000 + 65: return "LVM_SETWORKAREA"; + // case 0x1000 + 0: return wxT("LVM_GETBKCOLOR"); + case 0x1000 + 1: return wxT("LVM_SETBKCOLOR"); + case 0x1000 + 2: return wxT("LVM_GETIMAGELIST"); + case 0x1000 + 3: return wxT("LVM_SETIMAGELIST"); + case 0x1000 + 4: return wxT("LVM_GETITEMCOUNT"); + case 0x1000 + 5: return wxT("LVM_GETITEMA"); + case 0x1000 + 75: return wxT("LVM_GETITEMW"); + case 0x1000 + 6: return wxT("LVM_SETITEMA"); + case 0x1000 + 76: return wxT("LVM_SETITEMW"); + case 0x1000 + 7: return wxT("LVM_INSERTITEMA"); + case 0x1000 + 77: return wxT("LVM_INSERTITEMW"); + case 0x1000 + 8: return wxT("LVM_DELETEITEM"); + case 0x1000 + 9: return wxT("LVM_DELETEALLITEMS"); + case 0x1000 + 10: return wxT("LVM_GETCALLBACKMASK"); + case 0x1000 + 11: return wxT("LVM_SETCALLBACKMASK"); + case 0x1000 + 12: return wxT("LVM_GETNEXTITEM"); + case 0x1000 + 13: return wxT("LVM_FINDITEMA"); + case 0x1000 + 83: return wxT("LVM_FINDITEMW"); + case 0x1000 + 14: return wxT("LVM_GETITEMRECT"); + case 0x1000 + 15: return wxT("LVM_SETITEMPOSITION"); + case 0x1000 + 16: return wxT("LVM_GETITEMPOSITION"); + case 0x1000 + 17: return wxT("LVM_GETSTRINGWIDTHA"); + case 0x1000 + 87: return wxT("LVM_GETSTRINGWIDTHW"); + case 0x1000 + 18: return wxT("LVM_HITTEST"); + case 0x1000 + 19: return wxT("LVM_ENSUREVISIBLE"); + case 0x1000 + 20: return wxT("LVM_SCROLL"); + case 0x1000 + 21: return wxT("LVM_REDRAWITEMS"); + case 0x1000 + 22: return wxT("LVM_ARRANGE"); + case 0x1000 + 23: return wxT("LVM_EDITLABELA"); + case 0x1000 + 118: return wxT("LVM_EDITLABELW"); + case 0x1000 + 24: return wxT("LVM_GETEDITCONTROL"); + case 0x1000 + 25: return wxT("LVM_GETCOLUMNA"); + case 0x1000 + 95: return wxT("LVM_GETCOLUMNW"); + case 0x1000 + 26: return wxT("LVM_SETCOLUMNA"); + case 0x1000 + 96: return wxT("LVM_SETCOLUMNW"); + case 0x1000 + 27: return wxT("LVM_INSERTCOLUMNA"); + case 0x1000 + 97: return wxT("LVM_INSERTCOLUMNW"); + case 0x1000 + 28: return wxT("LVM_DELETECOLUMN"); + case 0x1000 + 29: return wxT("LVM_GETCOLUMNWIDTH"); + case 0x1000 + 30: return wxT("LVM_SETCOLUMNWIDTH"); + case 0x1000 + 31: return wxT("LVM_GETHEADER"); + case 0x1000 + 33: return wxT("LVM_CREATEDRAGIMAGE"); + case 0x1000 + 34: return wxT("LVM_GETVIEWRECT"); + case 0x1000 + 35: return wxT("LVM_GETTEXTCOLOR"); + case 0x1000 + 36: return wxT("LVM_SETTEXTCOLOR"); + case 0x1000 + 37: return wxT("LVM_GETTEXTBKCOLOR"); + case 0x1000 + 38: return wxT("LVM_SETTEXTBKCOLOR"); + case 0x1000 + 39: return wxT("LVM_GETTOPINDEX"); + case 0x1000 + 40: return wxT("LVM_GETCOUNTPERPAGE"); + case 0x1000 + 41: return wxT("LVM_GETORIGIN"); + case 0x1000 + 42: return wxT("LVM_UPDATE"); + case 0x1000 + 43: return wxT("LVM_SETITEMSTATE"); + case 0x1000 + 44: return wxT("LVM_GETITEMSTATE"); + case 0x1000 + 45: return wxT("LVM_GETITEMTEXTA"); + case 0x1000 + 115: return wxT("LVM_GETITEMTEXTW"); + case 0x1000 + 46: return wxT("LVM_SETITEMTEXTA"); + case 0x1000 + 116: return wxT("LVM_SETITEMTEXTW"); + case 0x1000 + 47: return wxT("LVM_SETITEMCOUNT"); + case 0x1000 + 48: return wxT("LVM_SORTITEMS"); + case 0x1000 + 49: return wxT("LVM_SETITEMPOSITION32"); + case 0x1000 + 50: return wxT("LVM_GETSELECTEDCOUNT"); + case 0x1000 + 51: return wxT("LVM_GETITEMSPACING"); + case 0x1000 + 52: return wxT("LVM_GETISEARCHSTRINGA"); + case 0x1000 + 117: return wxT("LVM_GETISEARCHSTRINGW"); + case 0x1000 + 53: return wxT("LVM_SETICONSPACING"); + case 0x1000 + 54: return wxT("LVM_SETEXTENDEDLISTVIEWSTYLE"); + case 0x1000 + 55: return wxT("LVM_GETEXTENDEDLISTVIEWSTYLE"); + case 0x1000 + 56: return wxT("LVM_GETSUBITEMRECT"); + case 0x1000 + 57: return wxT("LVM_SUBITEMHITTEST"); + case 0x1000 + 58: return wxT("LVM_SETCOLUMNORDERARRAY"); + case 0x1000 + 59: return wxT("LVM_GETCOLUMNORDERARRAY"); + case 0x1000 + 60: return wxT("LVM_SETHOTITEM"); + case 0x1000 + 61: return wxT("LVM_GETHOTITEM"); + case 0x1000 + 62: return wxT("LVM_SETHOTCURSOR"); + case 0x1000 + 63: return wxT("LVM_GETHOTCURSOR"); + case 0x1000 + 64: return wxT("LVM_APPROXIMATEVIEWRECT"); + case 0x1000 + 65: return wxT("LVM_SETWORKAREA"); // tree view - case 0x1100 + 0: return "TVM_INSERTITEMA"; - case 0x1100 + 50: return "TVM_INSERTITEMW"; - case 0x1100 + 1: return "TVM_DELETEITEM"; - case 0x1100 + 2: return "TVM_EXPAND"; - case 0x1100 + 4: return "TVM_GETITEMRECT"; - case 0x1100 + 5: return "TVM_GETCOUNT"; - case 0x1100 + 6: return "TVM_GETINDENT"; - case 0x1100 + 7: return "TVM_SETINDENT"; - case 0x1100 + 8: return "TVM_GETIMAGELIST"; - case 0x1100 + 9: return "TVM_SETIMAGELIST"; - case 0x1100 + 10: return "TVM_GETNEXTITEM"; - case 0x1100 + 11: return "TVM_SELECTITEM"; - case 0x1100 + 12: return "TVM_GETITEMA"; - case 0x1100 + 62: return "TVM_GETITEMW"; - case 0x1100 + 13: return "TVM_SETITEMA"; - case 0x1100 + 63: return "TVM_SETITEMW"; - case 0x1100 + 14: return "TVM_EDITLABELA"; - case 0x1100 + 65: return "TVM_EDITLABELW"; - case 0x1100 + 15: return "TVM_GETEDITCONTROL"; - case 0x1100 + 16: return "TVM_GETVISIBLECOUNT"; - case 0x1100 + 17: return "TVM_HITTEST"; - case 0x1100 + 18: return "TVM_CREATEDRAGIMAGE"; - case 0x1100 + 19: return "TVM_SORTCHILDREN"; - case 0x1100 + 20: return "TVM_ENSUREVISIBLE"; - case 0x1100 + 21: return "TVM_SORTCHILDRENCB"; - case 0x1100 + 22: return "TVM_ENDEDITLABELNOW"; - case 0x1100 + 23: return "TVM_GETISEARCHSTRINGA"; - case 0x1100 + 64: return "TVM_GETISEARCHSTRINGW"; - case 0x1100 + 24: return "TVM_SETTOOLTIPS"; - case 0x1100 + 25: return "TVM_GETTOOLTIPS"; + case 0x1100 + 0: return wxT("TVM_INSERTITEMA"); + case 0x1100 + 50: return wxT("TVM_INSERTITEMW"); + case 0x1100 + 1: return wxT("TVM_DELETEITEM"); + case 0x1100 + 2: return wxT("TVM_EXPAND"); + case 0x1100 + 4: return wxT("TVM_GETITEMRECT"); + case 0x1100 + 5: return wxT("TVM_GETCOUNT"); + case 0x1100 + 6: return wxT("TVM_GETINDENT"); + case 0x1100 + 7: return wxT("TVM_SETINDENT"); + case 0x1100 + 8: return wxT("TVM_GETIMAGELIST"); + case 0x1100 + 9: return wxT("TVM_SETIMAGELIST"); + case 0x1100 + 10: return wxT("TVM_GETNEXTITEM"); + case 0x1100 + 11: return wxT("TVM_SELECTITEM"); + case 0x1100 + 12: return wxT("TVM_GETITEMA"); + case 0x1100 + 62: return wxT("TVM_GETITEMW"); + case 0x1100 + 13: return wxT("TVM_SETITEMA"); + case 0x1100 + 63: return wxT("TVM_SETITEMW"); + case 0x1100 + 14: return wxT("TVM_EDITLABELA"); + case 0x1100 + 65: return wxT("TVM_EDITLABELW"); + case 0x1100 + 15: return wxT("TVM_GETEDITCONTROL"); + case 0x1100 + 16: return wxT("TVM_GETVISIBLECOUNT"); + case 0x1100 + 17: return wxT("TVM_HITTEST"); + case 0x1100 + 18: return wxT("TVM_CREATEDRAGIMAGE"); + case 0x1100 + 19: return wxT("TVM_SORTCHILDREN"); + case 0x1100 + 20: return wxT("TVM_ENSUREVISIBLE"); + case 0x1100 + 21: return wxT("TVM_SORTCHILDRENCB"); + case 0x1100 + 22: return wxT("TVM_ENDEDITLABELNOW"); + case 0x1100 + 23: return wxT("TVM_GETISEARCHSTRINGA"); + case 0x1100 + 64: return wxT("TVM_GETISEARCHSTRINGW"); + case 0x1100 + 24: return wxT("TVM_SETTOOLTIPS"); + case 0x1100 + 25: return wxT("TVM_GETTOOLTIPS"); // header - case 0x1200 + 0: return "HDM_GETITEMCOUNT"; - case 0x1200 + 1: return "HDM_INSERTITEMA"; - case 0x1200 + 10: return "HDM_INSERTITEMW"; - case 0x1200 + 2: return "HDM_DELETEITEM"; - case 0x1200 + 3: return "HDM_GETITEMA"; - case 0x1200 + 11: return "HDM_GETITEMW"; - case 0x1200 + 4: return "HDM_SETITEMA"; - case 0x1200 + 12: return "HDM_SETITEMW"; - case 0x1200 + 5: return "HDM_LAYOUT"; - case 0x1200 + 6: return "HDM_HITTEST"; - case 0x1200 + 7: return "HDM_GETITEMRECT"; - case 0x1200 + 8: return "HDM_SETIMAGELIST"; - case 0x1200 + 9: return "HDM_GETIMAGELIST"; - case 0x1200 + 15: return "HDM_ORDERTOINDEX"; - case 0x1200 + 16: return "HDM_CREATEDRAGIMAGE"; - case 0x1200 + 17: return "HDM_GETORDERARRAY"; - case 0x1200 + 18: return "HDM_SETORDERARRAY"; - case 0x1200 + 19: return "HDM_SETHOTDIVIDER"; + case 0x1200 + 0: return wxT("HDM_GETITEMCOUNT"); + case 0x1200 + 1: return wxT("HDM_INSERTITEMA"); + case 0x1200 + 10: return wxT("HDM_INSERTITEMW"); + case 0x1200 + 2: return wxT("HDM_DELETEITEM"); + case 0x1200 + 3: return wxT("HDM_GETITEMA"); + case 0x1200 + 11: return wxT("HDM_GETITEMW"); + case 0x1200 + 4: return wxT("HDM_SETITEMA"); + case 0x1200 + 12: return wxT("HDM_SETITEMW"); + case 0x1200 + 5: return wxT("HDM_LAYOUT"); + case 0x1200 + 6: return wxT("HDM_HITTEST"); + case 0x1200 + 7: return wxT("HDM_GETITEMRECT"); + case 0x1200 + 8: return wxT("HDM_SETIMAGELIST"); + case 0x1200 + 9: return wxT("HDM_GETIMAGELIST"); + case 0x1200 + 15: return wxT("HDM_ORDERTOINDEX"); + case 0x1200 + 16: return wxT("HDM_CREATEDRAGIMAGE"); + case 0x1200 + 17: return wxT("HDM_GETORDERARRAY"); + case 0x1200 + 18: return wxT("HDM_SETORDERARRAY"); + case 0x1200 + 19: return wxT("HDM_SETHOTDIVIDER"); // tab control - case 0x1300 + 2: return "TCM_GETIMAGELIST"; - case 0x1300 + 3: return "TCM_SETIMAGELIST"; - case 0x1300 + 4: return "TCM_GETITEMCOUNT"; - case 0x1300 + 5: return "TCM_GETITEMA"; - case 0x1300 + 60: return "TCM_GETITEMW"; - case 0x1300 + 6: return "TCM_SETITEMA"; - case 0x1300 + 61: return "TCM_SETITEMW"; - case 0x1300 + 7: return "TCM_INSERTITEMA"; - case 0x1300 + 62: return "TCM_INSERTITEMW"; - case 0x1300 + 8: return "TCM_DELETEITEM"; - case 0x1300 + 9: return "TCM_DELETEALLITEMS"; - case 0x1300 + 10: return "TCM_GETITEMRECT"; - case 0x1300 + 11: return "TCM_GETCURSEL"; - case 0x1300 + 12: return "TCM_SETCURSEL"; - case 0x1300 + 13: return "TCM_HITTEST"; - case 0x1300 + 14: return "TCM_SETITEMEXTRA"; - case 0x1300 + 40: return "TCM_ADJUSTRECT"; - case 0x1300 + 41: return "TCM_SETITEMSIZE"; - case 0x1300 + 42: return "TCM_REMOVEIMAGE"; - case 0x1300 + 43: return "TCM_SETPADDING"; - case 0x1300 + 44: return "TCM_GETROWCOUNT"; - case 0x1300 + 45: return "TCM_GETTOOLTIPS"; - case 0x1300 + 46: return "TCM_SETTOOLTIPS"; - case 0x1300 + 47: return "TCM_GETCURFOCUS"; - case 0x1300 + 48: return "TCM_SETCURFOCUS"; - case 0x1300 + 49: return "TCM_SETMINTABWIDTH"; - case 0x1300 + 50: return "TCM_DESELECTALL"; + case 0x1300 + 2: return wxT("TCM_GETIMAGELIST"); + case 0x1300 + 3: return wxT("TCM_SETIMAGELIST"); + case 0x1300 + 4: return wxT("TCM_GETITEMCOUNT"); + case 0x1300 + 5: return wxT("TCM_GETITEMA"); + case 0x1300 + 60: return wxT("TCM_GETITEMW"); + case 0x1300 + 6: return wxT("TCM_SETITEMA"); + case 0x1300 + 61: return wxT("TCM_SETITEMW"); + case 0x1300 + 7: return wxT("TCM_INSERTITEMA"); + case 0x1300 + 62: return wxT("TCM_INSERTITEMW"); + case 0x1300 + 8: return wxT("TCM_DELETEITEM"); + case 0x1300 + 9: return wxT("TCM_DELETEALLITEMS"); + case 0x1300 + 10: return wxT("TCM_GETITEMRECT"); + case 0x1300 + 11: return wxT("TCM_GETCURSEL"); + case 0x1300 + 12: return wxT("TCM_SETCURSEL"); + case 0x1300 + 13: return wxT("TCM_HITTEST"); + case 0x1300 + 14: return wxT("TCM_SETITEMEXTRA"); + case 0x1300 + 40: return wxT("TCM_ADJUSTRECT"); + case 0x1300 + 41: return wxT("TCM_SETITEMSIZE"); + case 0x1300 + 42: return wxT("TCM_REMOVEIMAGE"); + case 0x1300 + 43: return wxT("TCM_SETPADDING"); + case 0x1300 + 44: return wxT("TCM_GETROWCOUNT"); + case 0x1300 + 45: return wxT("TCM_GETTOOLTIPS"); + case 0x1300 + 46: return wxT("TCM_SETTOOLTIPS"); + case 0x1300 + 47: return wxT("TCM_GETCURFOCUS"); + case 0x1300 + 48: return wxT("TCM_SETCURFOCUS"); + case 0x1300 + 49: return wxT("TCM_SETMINTABWIDTH"); + case 0x1300 + 50: return wxT("TCM_DESELECTALL"); // toolbar - case WM_USER+1000+1: return "TB_ENABLEBUTTON"; - case WM_USER+1000+2: return "TB_CHECKBUTTON"; - case WM_USER+1000+3: return "TB_PRESSBUTTON"; - case WM_USER+1000+4: return "TB_HIDEBUTTON"; - case WM_USER+1000+5: return "TB_INDETERMINATE"; - case WM_USER+1000+9: return "TB_ISBUTTONENABLED"; - case WM_USER+1000+10: return "TB_ISBUTTONCHECKED"; - case WM_USER+1000+11: return "TB_ISBUTTONPRESSED"; - case WM_USER+1000+12: return "TB_ISBUTTONHIDDEN"; - case WM_USER+1000+13: return "TB_ISBUTTONINDETERMINATE"; - case WM_USER+1000+17: return "TB_SETSTATE"; - case WM_USER+1000+18: return "TB_GETSTATE"; - case WM_USER+1000+19: return "TB_ADDBITMAP"; - case WM_USER+1000+20: return "TB_ADDBUTTONS"; - case WM_USER+1000+21: return "TB_INSERTBUTTON"; - case WM_USER+1000+22: return "TB_DELETEBUTTON"; - case WM_USER+1000+23: return "TB_GETBUTTON"; - case WM_USER+1000+24: return "TB_BUTTONCOUNT"; - case WM_USER+1000+25: return "TB_COMMANDTOINDEX"; - case WM_USER+1000+26: return "TB_SAVERESTOREA"; - case WM_USER+1000+76: return "TB_SAVERESTOREW"; - case WM_USER+1000+27: return "TB_CUSTOMIZE"; - case WM_USER+1000+28: return "TB_ADDSTRINGA"; - case WM_USER+1000+77: return "TB_ADDSTRINGW"; - case WM_USER+1000+29: return "TB_GETITEMRECT"; - case WM_USER+1000+30: return "TB_BUTTONSTRUCTSIZE"; - case WM_USER+1000+31: return "TB_SETBUTTONSIZE"; - case WM_USER+1000+32: return "TB_SETBITMAPSIZE"; - case WM_USER+1000+33: return "TB_AUTOSIZE"; - case WM_USER+1000+35: return "TB_GETTOOLTIPS"; - case WM_USER+1000+36: return "TB_SETTOOLTIPS"; - case WM_USER+1000+37: return "TB_SETPARENT"; - case WM_USER+1000+39: return "TB_SETROWS"; - case WM_USER+1000+40: return "TB_GETROWS"; - case WM_USER+1000+42: return "TB_SETCMDID"; - case WM_USER+1000+43: return "TB_CHANGEBITMAP"; - case WM_USER+1000+44: return "TB_GETBITMAP"; - case WM_USER+1000+45: return "TB_GETBUTTONTEXTA"; - case WM_USER+1000+75: return "TB_GETBUTTONTEXTW"; - case WM_USER+1000+46: return "TB_REPLACEBITMAP"; - case WM_USER+1000+47: return "TB_SETINDENT"; - case WM_USER+1000+48: return "TB_SETIMAGELIST"; - case WM_USER+1000+49: return "TB_GETIMAGELIST"; - case WM_USER+1000+50: return "TB_LOADIMAGES"; - case WM_USER+1000+51: return "TB_GETRECT"; - case WM_USER+1000+52: return "TB_SETHOTIMAGELIST"; - case WM_USER+1000+53: return "TB_GETHOTIMAGELIST"; - case WM_USER+1000+54: return "TB_SETDISABLEDIMAGELIST"; - case WM_USER+1000+55: return "TB_GETDISABLEDIMAGELIST"; - case WM_USER+1000+56: return "TB_SETSTYLE"; - case WM_USER+1000+57: return "TB_GETSTYLE"; - case WM_USER+1000+58: return "TB_GETBUTTONSIZE"; - case WM_USER+1000+59: return "TB_SETBUTTONWIDTH"; - case WM_USER+1000+60: return "TB_SETMAXTEXTROWS"; - case WM_USER+1000+61: return "TB_GETTEXTROWS"; - case WM_USER+1000+41: return "TB_GETBITMAPFLAGS"; + case WM_USER+1000+1: return wxT("TB_ENABLEBUTTON"); + case WM_USER+1000+2: return wxT("TB_CHECKBUTTON"); + case WM_USER+1000+3: return wxT("TB_PRESSBUTTON"); + case WM_USER+1000+4: return wxT("TB_HIDEBUTTON"); + case WM_USER+1000+5: return wxT("TB_INDETERMINATE"); + case WM_USER+1000+9: return wxT("TB_ISBUTTONENABLED"); + case WM_USER+1000+10: return wxT("TB_ISBUTTONCHECKED"); + case WM_USER+1000+11: return wxT("TB_ISBUTTONPRESSED"); + case WM_USER+1000+12: return wxT("TB_ISBUTTONHIDDEN"); + case WM_USER+1000+13: return wxT("TB_ISBUTTONINDETERMINATE"); + case WM_USER+1000+17: return wxT("TB_SETSTATE"); + case WM_USER+1000+18: return wxT("TB_GETSTATE"); + case WM_USER+1000+19: return wxT("TB_ADDBITMAP"); + case WM_USER+1000+20: return wxT("TB_ADDBUTTONS"); + case WM_USER+1000+21: return wxT("TB_INSERTBUTTON"); + case WM_USER+1000+22: return wxT("TB_DELETEBUTTON"); + case WM_USER+1000+23: return wxT("TB_GETBUTTON"); + case WM_USER+1000+24: return wxT("TB_BUTTONCOUNT"); + case WM_USER+1000+25: return wxT("TB_COMMANDTOINDEX"); + case WM_USER+1000+26: return wxT("TB_SAVERESTOREA"); + case WM_USER+1000+76: return wxT("TB_SAVERESTOREW"); + case WM_USER+1000+27: return wxT("TB_CUSTOMIZE"); + case WM_USER+1000+28: return wxT("TB_ADDSTRINGA"); + case WM_USER+1000+77: return wxT("TB_ADDSTRINGW"); + case WM_USER+1000+29: return wxT("TB_GETITEMRECT"); + case WM_USER+1000+30: return wxT("TB_BUTTONSTRUCTSIZE"); + case WM_USER+1000+31: return wxT("TB_SETBUTTONSIZE"); + case WM_USER+1000+32: return wxT("TB_SETBITMAPSIZE"); + case WM_USER+1000+33: return wxT("TB_AUTOSIZE"); + case WM_USER+1000+35: return wxT("TB_GETTOOLTIPS"); + case WM_USER+1000+36: return wxT("TB_SETTOOLTIPS"); + case WM_USER+1000+37: return wxT("TB_SETPARENT"); + case WM_USER+1000+39: return wxT("TB_SETROWS"); + case WM_USER+1000+40: return wxT("TB_GETROWS"); + case WM_USER+1000+42: return wxT("TB_SETCMDID"); + case WM_USER+1000+43: return wxT("TB_CHANGEBITMAP"); + case WM_USER+1000+44: return wxT("TB_GETBITMAP"); + case WM_USER+1000+45: return wxT("TB_GETBUTTONTEXTA"); + case WM_USER+1000+75: return wxT("TB_GETBUTTONTEXTW"); + case WM_USER+1000+46: return wxT("TB_REPLACEBITMAP"); + case WM_USER+1000+47: return wxT("TB_SETINDENT"); + case WM_USER+1000+48: return wxT("TB_SETIMAGELIST"); + case WM_USER+1000+49: return wxT("TB_GETIMAGELIST"); + case WM_USER+1000+50: return wxT("TB_LOADIMAGES"); + case WM_USER+1000+51: return wxT("TB_GETRECT"); + case WM_USER+1000+52: return wxT("TB_SETHOTIMAGELIST"); + case WM_USER+1000+53: return wxT("TB_GETHOTIMAGELIST"); + case WM_USER+1000+54: return wxT("TB_SETDISABLEDIMAGELIST"); + case WM_USER+1000+55: return wxT("TB_GETDISABLEDIMAGELIST"); + case WM_USER+1000+56: return wxT("TB_SETSTYLE"); + case WM_USER+1000+57: return wxT("TB_GETSTYLE"); + case WM_USER+1000+58: return wxT("TB_GETBUTTONSIZE"); + case WM_USER+1000+59: return wxT("TB_SETBUTTONWIDTH"); + case WM_USER+1000+60: return wxT("TB_SETMAXTEXTROWS"); + case WM_USER+1000+61: return wxT("TB_GETTEXTROWS"); + case WM_USER+1000+41: return wxT("TB_GETBITMAPFLAGS"); } - static char s_szBuf[128]; - sprintf(s_szBuf, "", nMessage); - return s_szBuf; + static wxString s_szBuf; + s_szBuf.Printf(wxT(""), nMessage); + return s_szBuf.c_str(); } // end of wxGetMessageName @@ -5167,25 +4965,21 @@ static void TranslateKbdEventToMouse( // Find the wxWindow at the current mouse position, returning the mouse // position. -wxWindow* wxFindWindowAtPointer( - wxPoint& WXUNUSED(rPt) -) +wxWindow* wxFindWindowAtPointer(wxPoint& WXUNUSED(rPt)) { return wxFindWindowAtPoint(wxGetMousePosition()); } -wxWindow* wxFindWindowAtPoint( - const wxPoint& rPt -) +wxWindow* wxFindWindowAtPoint(const wxPoint& rPt) { - POINTL vPt2; + POINTL vPt2; vPt2.x = rPt.x; vPt2.y = rPt.y; - HWND hWndHit = ::WinWindowFromPoint(HWND_DESKTOP, &vPt2, FALSE); - wxWindow* pWin = wxFindWinFromHandle((WXHWND)hWndHit) ; - HWND hWnd = hWndHit; + HWND hWndHit = ::WinWindowFromPoint(HWND_DESKTOP, &vPt2, FALSE); + wxWindow* pWin = wxFindWinFromHandle((WXHWND)hWndHit) ; + HWND hWnd = hWndHit; // // Try to find a window with a wxWindow associated with it @@ -5201,12 +4995,29 @@ wxWindow* wxFindWindowAtPoint( // Get the current mouse position. wxPoint wxGetMousePosition() { - POINTL vPt; + POINTL vPt; ::WinQueryPointerPos(HWND_DESKTOP, &vPt); return wxPoint(vPt.x, vPt.y); } +wxMouseState wxGetMouseState() +{ + wxMouseState ms; + wxPoint pt = wxGetMousePosition(); + ms.SetX(pt.x); + ms.SetY(pt.y); + ms.SetLeftDown(IsKeyDown(VK_BUTTON1)); + ms.SetMiddleDown(IsKeyDown(VK_BUTTON3)); + ms.SetRightDown(IsKeyDown(VK_BUTTON2)); + ms.SetControlDown(IsCtrlDown()); + ms.SetShiftDown(IsShiftDown()); + ms.SetAltDown(IsKeyDown(VK_ALT)|IsKeyDown(VK_ALTGRAF)); + ms.SetMetaDown(IsKeyDown(VK_ALTGRAF)); + return ms; +} + + wxWindowOS2* FindWindowForMouseEvent( wxWindow* pWin, short* WXUNUSED(pnX), short* WXUNUSED(pnY) )