Frame and Window coding

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6160 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Webster 2000-02-21 05:12:34 +00:00
parent f250631042
commit a885d89ae9
16 changed files with 656 additions and 424 deletions

View File

@ -61,7 +61,7 @@ public:
// OS2 only
virtual bool OS2Command(WXUINT param, WXWORD id);
MRESULT OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
MRESULT OS2WindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
protected:
virtual void DoSetItemClientData( int n, void* clientData );

View File

@ -110,7 +110,7 @@ public:
// implementation
// --------------
virtual MRESULT OS2WindowProc(HWND hwnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
virtual MRESULT OS2WindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
WXUINT message, WXWPARAM wParam, WXLPARAM lParam);

View File

@ -53,7 +53,7 @@ public:
virtual bool ShowFullScreen( bool bShow
,long lStyle = wxFULLSCREEN_ALL
);
virtual bool IsFullScreen(void) const { return m_bFfsIsShowing; };
virtual bool IsFullScreen(void) const { return m_bFsIsShowing; };
// implementation only from now on
@ -131,8 +131,8 @@ public:
// tooltip management
#if wxUSE_TOOLTIPS
WXHWND GetToolTipCtrl(void) const { return m_hHwndToolTip; }
void SetToolTipCtrl(WXHWND hHwndTT) { m_hHwndToolTip = hHwndTT; }
WXHWND GetToolTipCtrl(void) const { return m_hWndToolTip; }
void SetToolTipCtrl(WXHWND hHwndTT) { m_hWndToolTip = hHwndTT; }
#endif // tooltips
protected:

View File

@ -86,9 +86,9 @@ public:
bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control);
// override window proc for MDI-specific message processing
virtual MRESULT OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
virtual MRESULT OS2WindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
virtual MRESULT OS2DefWindowProc(HWND hwnd, WXUINT, WXWPARAM, WXLPARAM);
virtual MRESULT OS2DefWindowProc(WXUINT, WXWPARAM, WXLPARAM);
virtual bool OS2TranslateMessage(WXMSG* msg);
protected:
@ -144,8 +144,8 @@ public:
bool HandleWindowPosChanging(void *lpPos);
bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control);
virtual MRESULT OS2WindowProc(HWND hwnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
virtual MRESULT OS2DefWindowProc(HWND hwnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
virtual MRESULT OS2WindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
virtual MRESULT OS2DefWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
virtual bool OS2TranslateMessage(WXMSG *msg);
virtual void OS2DestroyWindow();

View File

@ -49,7 +49,7 @@ class WXDLLEXPORT wxStaticBox: public wxControl
void OnEraseBackground(wxEraseEvent& event);
virtual MRESULT OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
virtual MRESULT OS2WindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
WXUINT message, WXWPARAM wParam, WXLPARAM lParam);

View File

@ -53,7 +53,7 @@ class WXDLLEXPORT wxStaticText: public wxControl
// callbacks
virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
virtual MRESULT OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
virtual MRESULT OS2WindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
protected:
virtual wxSize DoGetBestSize() const;

View File

@ -100,8 +100,7 @@ protected:
void UpdateSize(void);
// override WndProc to process WM_SIZE
virtual MRESULT OS2WindowProc( HWND hWnd
,WXUINT ulMsg
virtual MRESULT OS2WindowProc( WXUINT ulMsg
,WXWPARAM wParam
,WXLPARAM lParam
);

View File

@ -46,8 +46,6 @@ enum
class WXDLLEXPORT wxWindow : public wxWindowBase
{
DECLARE_DYNAMIC_CLASS(wxWindow);
public:
wxWindow() { Init(); }
@ -205,6 +203,7 @@ public:
// event handlers
// --------------
void OnSetFocus(wxFocusEvent& rEvent);
void OnEraseBackground(wxEraseEvent& rEvent);
void OnIdle(wxIdleEvent& rEvent);
@ -424,15 +423,13 @@ public:
);
// Window procedure
virtual MRESULT OS2WindowProc( HWND hwnd
,WXUINT uMsg
virtual MRESULT OS2WindowProc( WXUINT uMsg
,WXWPARAM wParam
,WXLPARAM lParam
);
// Calls an appropriate default window procedure
virtual MRESULT OS2DefWindowProc( HWND hwnd
,WXUINT uMsg
virtual MRESULT OS2DefWindowProc( WXUINT uMsg
,WXWPARAM wParam
,WXLPARAM lParam
);
@ -469,6 +466,17 @@ public:
);
protected:
// PM can't create some MSW styles natively but can perform these after
// creation by sending messages
typedef enum extra_flags { kFrameToolWindow = 0x0001
,kVertCaption = 0x0002
,kHorzCaption = 0x0004
} EExtraFlags;
// Some internal sizeing id's to make it easy for event handlers
typedef enum size_types { kSizeNormal
,kSizeMax
,kSizeMin
} ESizeTypes;
// the window handle
WXHWND m_hWnd;
@ -557,13 +565,17 @@ private:
,WXLPARAM lParam
,WXLPARAM* pResult
);
// the helper functions used by HandleChar/KeyXXX methods
wxKeyEvent CreateKeyEvent(wxEventType evType, int id, WXLPARAM lp) const;
DECLARE_DYNAMIC_CLASS(wxWindow);
DECLARE_NO_COPY_CLASS(wxWindow);
DECLARE_EVENT_TABLE()
private:
// Virtual function hiding supression
inline virtual bool Reparent(wxWindowBase* pNewParent)
{ return(wxWindowBase::Reparent(pNewParent));};
};
}; // end of wxWindow
// ---------------------------------------------------------------------------
// global functions

View File

@ -246,7 +246,7 @@ wxSize wxChoice::DoGetBestSize() const
return wxSize(wChoice, hChoice);
}
MRESULT wxChoice::OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
MRESULT wxChoice::OS2WindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
// TODO:
/*
@ -264,7 +264,7 @@ MRESULT wxChoice::OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARA
return 0;
}
*/
return wxWindow::OS2WindowProc(hwnd, nMsg, wParam, lParam);
return wxWindow::OS2WindowProc(nMsg, wParam, lParam);
}
bool wxChoice::OS2Command(WXUINT param, WXWORD WXUNUSED(id))

View File

@ -423,7 +423,7 @@ void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& event)
Refresh();
}
MRESULT wxDialog::OS2WindowProc(HWND hwnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
MRESULT wxDialog::OS2WindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
MRESULT rc = 0;
bool processed = FALSE;
@ -438,7 +438,7 @@ MRESULT wxDialog::OS2WindowProc(HWND hwnd, WXUINT message, WXWPARAM wParam, WXLP
}
if ( !processed )
rc = wxWindow::OS2WindowProc(hwnd, message, wParam, lParam);
rc = wxWindow::OS2WindowProc(message, wParam, lParam);
return rc;
}

File diff suppressed because it is too large Load Diff

View File

@ -288,8 +288,7 @@ void wxMDIParentFrame::ActivatePrevious()
// the MDI parent frame window proc
// ---------------------------------------------------------------------------
MRESULT wxMDIParentFrame::OS2WindowProc(HWND hwnd,
WXUINT message,
MRESULT wxMDIParentFrame::OS2WindowProc(WXUINT message,
WXWPARAM wParam,
WXLPARAM lParam)
{
@ -504,8 +503,7 @@ bool wxMDIParentFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND hwnd)
return FALSE;
}
MRESULT wxMDIParentFrame::OS2DefWindowProc(HWND hwnd,
WXUINT message,
MRESULT wxMDIParentFrame::OS2DefWindowProc(WXUINT message,
WXWPARAM wParam,
WXLPARAM lParam)
{
@ -774,8 +772,7 @@ void wxMDIChildFrame::Activate()
// MDI window proc and message handlers
// ---------------------------------------------------------------------------
MRESULT wxMDIChildFrame::OS2WindowProc(HWND hwnd,
WXUINT message,
MRESULT wxMDIChildFrame::OS2WindowProc(WXUINT message,
WXWPARAM wParam,
WXLPARAM lParam)
{
@ -987,7 +984,7 @@ bool wxMDIChildFrame::HandleWindowPosChanging(void *pos)
// MDI specific message translation/preprocessing
// ---------------------------------------------------------------------------
MRESULT wxMDIChildFrame::OS2DefWindowProc(HWND hwnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
MRESULT wxMDIChildFrame::OS2DefWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
// TODO
/*

View File

@ -174,7 +174,7 @@ void wxStaticBox::OnEraseBackground(wxEraseEvent& event)
*/
}
MRESULT wxStaticBox::OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
MRESULT wxStaticBox::OS2WindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
// TODO:
/*
@ -192,7 +192,7 @@ MRESULT wxStaticBox::OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLP
}
*/
return wxControl::OS2WindowProc(hwnd, nMsg, wParam, lParam);
return wxControl::OS2WindowProc(nMsg, wParam, lParam);
}

View File

@ -138,7 +138,7 @@ WXHBRUSH wxStaticText::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
return (WXHBRUSH)0;
}
MRESULT wxStaticText::OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
MRESULT wxStaticText::OS2WindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
// Ensure that static items get messages. Some controls don't like this
// message to be intercepted (e.g. RichEdit), hence the tests.
@ -147,6 +147,6 @@ MRESULT wxStaticText::OS2WindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXL
if (nMsg == WM_NCHITTEST)
return (long)HTCLIENT;
*/
return wxWindow::OS2WindowProc(hwnd, nMsg, wParam, lParam);
return wxWindow::OS2WindowProc(nMsg, wParam, lParam);
}

View File

@ -919,8 +919,7 @@ void wxToolBar::OnMouseEvent(
}
MRESULT wxToolBar::OS2WindowProc(
HWND hWnd
, WXUINT ulMsg
WXUINT ulMsg
, MPARAM wParam
, MPARAM lParam
)

View File

@ -9,7 +9,9 @@
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
//
// For compilers that support precompilation, includes "wx.h".
//
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
@ -64,14 +66,21 @@
#include <string.h>
// place compiler, OS specific includes here
//
// Place compiler, OS specific includes here
//
// standard macros -- these are for OS/2 PM, but most GUI's have something similar
//
// Standard macros -- these are for OS/2 PM, but most GUI's have something similar
//
#ifndef GET_X_LPARAM
//
// SHORT1FROMMP -- LOWORD
//
#define GET_X_LPARAM(mp) ((unsigned short)(unsigned long)(mp))
//
// SHORT2FROMMP -- HIWORD
//
#define GET_Y_LPARAM(mp) ((unsigned short)(unsigned long)(mp >> 16))
#endif // GET_X_LPARAM
@ -79,18 +88,23 @@
// global variables
// ---------------------------------------------------------------------------
// the last Windows message we got (MT-UNSAFE)
extern WXMSGID s_currentMsg;
extern wxList WXDLLEXPORT wxPendingDelete;
extern wxChar wxCanvasClassName[];
//
// The last Windows message we got (MT-UNSAFE)
//
extern WXMSGID s_currentMsg;
wxMenu *wxCurrentPopupMenu = NULL;
wxList *wxWinHandleList = NULL;
wxMenu* wxCurrentPopupMenu = NULL;
extern wxList WXDLLEXPORT wxPendingDelete;
extern wxChar* wxCanvasClassName;
wxList* wxWinHandleList = NULL;
// ---------------------------------------------------------------------------
// private functions
// ---------------------------------------------------------------------------
//
// the window proc for all our windows; most gui's have something similar
//
MRESULT wxWndProc( HWND hWnd
,ULONG message
,MPARAM mp1
@ -101,10 +115,27 @@ MRESULT wxWndProc( HWND hWnd
const char *wxGetMessageName(int message);
#endif //__WXDEBUG__
void wxRemoveHandleAssociation(wxWindow *win);
void wxAssociateWinWithHandle(HWND hWnd, wxWindow *win);
wxWindow *wxFindWinFromHandle(WXHWND hWnd);
void wxRemoveHandleAssociation(wxWindow* pWin);
void wxAssociateWinWithHandle( HWND hWnd
,wxWindow* pWin
);
wxWindow* wxFindWinFromHandle(WXHWND hWnd);
//
// This magical function is used to translate VK_APPS key presses to right
// mouse clicks
//
static void TranslateKbdEventToMouse( wxWindow* pWin
,int* pX
,int* pY
,MPARAM* pFlags
);
//
// 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; }
// ---------------------------------------------------------------------------
// event tables
// ---------------------------------------------------------------------------
@ -122,40 +153,47 @@ END_EVENT_TABLE()
// implementation
// ===========================================================================
//
// Find an item given the PM Window id
//
wxWindow* wxWindow::FindItem(
long ulId
long lId
) const
{
wxControl* pItem = wxDynamicCast( this
,wxControl
);
if (pItem)
{
//
// I it we or one of our "internal" children?
//
if (pItem->GetId() == lId ||
(pItem->GetSubcontrols().Index(lId) != wxNOT_FOUND))
{
return pItem;
}
}
wxWindowList::Node* pCurrent = GetChildren().GetFirst();
while (pCurrent)
{
wxWindow* pChildWin = pCurrent->GetData();
wxWindow* pWnd = pChildWin->FindItem(ulId);
wxWindow* pWnd = pChildWin->FindItem(lId);
if (pWnd)
return pWnd;
if (pChildWin->IsKindOf(CLASSINFO(wxControl)))
{
wxControl* pItem = (wxControl *)pChildWin;
if (pItem->GetId() == ulId)
return(pItem);
else
{
// In case it's a 'virtual' control (e.g. radiobox)
if (pItem->GetSubcontrols().Member((wxObject *)ulId))
return(pItem);
}
}
pCurrent = pCurrent->GetNext();
}
return(NULL);
}
} // end of wxWindow::FindItem
//
// Find an item given the PM Window handle
//
wxWindow* wxWindow::FindItemByHWND(
WXHWND hWnd
, bool bControlOnly
@ -167,7 +205,9 @@ wxWindow* wxWindow::FindItemByHWND(
{
wxWindow* pParent = pCurrent->GetData();
//
// Do a recursive search.
//
wxWindow* pWnd = pParent->FindItemByHWND(hWnd);
if (pWnd)
@ -188,9 +228,11 @@ wxWindow* wxWindow::FindItemByHWND(
pCurrent = pCurrent->GetNext();
}
return(NULL);
}
} // end of wxWindow::FindItemByHWND
//
// Default command handler
//
bool wxWindow::OS2Command(
WXUINT WXUNUSED(uParam)
, WXWORD WXUNUSED(uId)
@ -205,10 +247,14 @@ bool wxWindow::OS2Command(
void wxWindow::Init()
{
// generic
//
// Generic
//
InitBase();
//
// PM specific
//
m_bDoubleClickAllowed = 0;
m_bWinCaptured = FALSE;
@ -217,19 +263,23 @@ void wxWindow::Init()
m_bUseCtl3D = FALSE;
m_bMouseInWindow = FALSE;
//
// wxWnd
//
m_hMenu = 0;
m_hWnd = 0;
// pass WM_GETDLGCODE to DefWindowProc()
//
// Pass WM_GETDLGCODE to DefWindowProc()
m_lDlgCode = 0;
m_nXThumbSize = 0;
m_nYThumbSize = 0;
m_bBackgroundTransparent = FALSE;
// as all windows are created with WS_VISIBLE style...
//
// As all windows are created with WS_VISIBLE style...
//
m_isShown = TRUE;
#if wxUSE_MOUSEEVENT_HACK
@ -237,26 +287,29 @@ void wxWindow::Init()
m_lLastMouseY = -1;
m_nLastMouseEvent = -1;
#endif // wxUSE_MOUSEEVENT_HACK
}
} // wxWindow::Init
//
// Destructor
//
wxWindow::~wxWindow()
{
m_isBeingDeleted = TRUE;
OS2DetachWindowMenu();
// delete handlers?
if (m_parent)
m_parent->RemoveChild(this);
DestroyChildren();
if (m_hWnd)
{
if(!WinDestroyWindow(GetHWND()))
if(!::WinDestroyWindow(GetHWND()))
wxLogLastError(wxT("DestroyWindow"));
//
// remove hWnd <-> wxWindow association
//
wxRemoveHandleAssociation(this);
}
}
} // end of wxWindow::~wxWindow
bool wxWindow::Create(
wxWindow* pParent
@ -281,10 +334,39 @@ bool wxWindow::Create(
pParent->AddChild(this);
ULONG ulFlags = 0L;
//
// Frame windows and their derivatives only
//
if (lStyle & wxBORDER)
ulFlags |= FCF_BORDER;
if (lStyle & wxTHICK_FRAME )
ulFlags |= FCF_SIZEBORDER;
//
// Some generic window styles
//
ulFlags |= WS_VISIBLE;
if (lStyle & wxCLIP_CHILDREN )
ulFlags |= WS_CLIPCHILDREN;
bool bWant3D;
WXDWORD dwExStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &bWant3D);
DWORD ulFlags = 0L;
//
// OS/2 PM doesn't have "extended" styles but if the library specifies
// them and we are creating a frame window then at least give it a border
//
if ( bWant3D ||
(m_windowStyle & wxSIMPLE_BORDER) ||
(m_windowStyle & wxRAISED_BORDER ) ||
(m_windowStyle & wxSUNKEN_BORDER) ||
(m_windowStyle & wxDOUBLE_BORDER)
)
{
ulFlags |= FCF_BORDER;
}
OS2Create( m_windowId
,pParent
,wxCanvasClassName
@ -299,7 +381,7 @@ bool wxWindow::Create(
,dwExStyle
);
return(TRUE);
}
} // end of wxWindow::Create
// ---------------------------------------------------------------------------
// basic operations
@ -311,7 +393,7 @@ void wxWindow::SetFocus()
if (hWnd)
::WinSetFocus(HWND_DESKTOP, hWnd);
}
} // end of wxWindow::SetFocus
wxWindow* wxWindowBase::FindFocus()
{
@ -322,7 +404,7 @@ wxWindow* wxWindowBase::FindFocus()
return wxFindWinFromHandle((WXHWND)hWnd);
}
return NULL;
}
} // wxWindowBase::FindFocus
bool wxWindow::Enable(
bool bEnable
@ -346,7 +428,7 @@ bool wxWindow::Enable(
pNode = pNode->GetNext();
}
return(TRUE);
}
} // end of wxWindow::Enable
bool wxWindow::Show(
bool bShow
@ -361,32 +443,32 @@ bool wxWindow::Show(
if (bShow)
{
::WinSetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_ACTIVATE);
::WinSetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_ACTIVATE | SWP_ZORDER);
}
return(TRUE);
}
} // end of wxWindow::Show
void wxWindow::Raise()
{
::WinSetWindowPos(GetHwnd(), HWND_BOTTOM, 0, 0, 0, 0, SWP_ACTIVATE);
}
::WinSetWindowPos(GetHwnd(), HWND_TOP, 0, 0, 0, 0, SWP_ZORDER | SWP_ACTIVATE);
} // end of wxWindow::Raise
void wxWindow::Lower()
{
::WinSetWindowPos(GetHwnd(), HWND_BOTTOM, 0, 0, 0, 0, SWP_DEACTIVATE);
}
::WinSetWindowPos(GetHwnd(), HWND_BOTTOM, 0, 0, 0, 0, SWP_ZORDER | SWP_DEACTIVATE);
} // end of wxWindow::Lower
void wxWindow::SetTitle(
const wxString& rTitle
)
{
::WinSetWindowText(GetHwnd(), rTitle.c_str());
}
} // end of wxWindow::SetTitle
wxString wxWindow::GetTitle() const
{
return wxGetWindowText(GetHWND());
}
} // end of wxWindow::GetTitle
void wxWindow::CaptureMouse()
{
@ -397,16 +479,16 @@ void wxWindow::CaptureMouse()
::WinSetCapture(HWND_DESKTOP, hWnd);
m_bWinCaptured = TRUE;
}
}
} // end of wxWindow::GetTitle
void wxWindow::ReleaseMouse()
{
if ( m_bWinCaptured )
if (m_bWinCaptured)
{
::WinSetCapture(HWND_DESKTOP, NULLHANDLE);
m_bWinCaptured = FALSE;
}
}
} // end of wxWindow::ReleaseMouse
bool wxWindow::SetFont(
const wxFont& rFont
@ -458,15 +540,26 @@ bool wxWindow::SetCursor(
if ((::GpiPtInRegion(hPS, hRGN, &vPoint) == PRGN_INSIDE) && !wxIsBusy())
{
// ::SetCursor((HCURSOR)m_cursor.GetHCURSOR());
::WinSetPointer(HWND_DESKTOP, (HPOINTER)m_cursor.GetHCURSOR());
}
return TRUE;
}
} // end of wxWindow::SetCursor
void wxWindow::WarpPointer(int x_pos, int y_pos)
void wxWindow::WarpPointer(
int nXPos
, int nYPos
)
{
// TODO:
}
int nX = nXPos;
int nY = nYPos;
RECTL vRect;
::WinQueryWindowRect(GetHwnd(), &vRect);
nX += vRect.xLeft;
nY += vRect.yBottom;
::WinSetPointerPos(HWND_DESKTOP, (LONG)nX, (LONG)(nY));
} // end of wxWindow::WarpPointer
#if WXWIN_COMPATIBILITY
void wxWindow::OS2DeviceToLogical (float *x, float *y) const
@ -479,27 +572,51 @@ void wxWindow::OS2DeviceToLogical (float *x, float *y) const
// ---------------------------------------------------------------------------
#if WXWIN_COMPATIBILITY
void wxWindow::SetScrollRange(int orient, int range, bool refresh)
void wxWindow::SetScrollRange(
int nOrient
, int nRange
, bool bRefresh
)
{
// TODO:
::WinSendMsg(GetHwnd(), SBM_SETSCROLLBAR, (MPARAM)0, MPFROM2SHORT(0, nRange));
} // end of wxWindow::SetScrollRange
void wxWindow::SetScrollPage(
int nOrient
, int nPage
, bool bRefresh
)
{
if ( orient == wxHORIZONTAL )
m_xThumbSize = page;
else
m_yThumbSize = page;
}
void wxWindow::SetScrollPage(int orient, int page, bool refresh)
int wxWindow::OldGetScrollRange(
int nOrient
) const
{
// TODO:
}
MRESULT mRc;
HWND hWnd = GetHwnd();
int wxWindow::OldGetScrollRange(int orient) const
{
// TODO:
return 0;
}
if (hWnd)
{
mRc = WinSendMsg(hWnd, SBM_QUERYRANGE, (MPARAM)0L, (MPARAM)0L);
return(SHORT2FROMMR(mRc));
}
return 0;
} // end of wxWindow::OldGetScrollRange
int wxWindow::GetScrollPage(int orient) const
int wxWindow::GetScrollPage(
int nOrient
) const
{
// TODO:
return(1);
}
if (nOrient == wxHORIZONTAL)
return m_xThumbSize;
else
return m_yThumbSize;
} // end of wxWindow::GetScrollPage
#endif // WXWIN_COMPATIBILITY
int wxWindow::GetScrollPos(int orient) const
@ -905,7 +1022,7 @@ bool wxWindow::DoPopupMenu( wxMenu *menu, int x, int y )
// pre/post message processing
// ===========================================================================
MRESULT wxWindow::OS2DefWindowProc(HWND hwnd, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
MRESULT wxWindow::OS2DefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
// TODO:
return (MRESULT)0;
@ -1008,13 +1125,13 @@ MRESULT wxWndProc(HWND hWnd, ULONG message, MPARAM wParam, MPARAM lParam)
{
// FIXME: why do we do this?
wnd->SetHWND((WXHWND) hWnd);
rc = wnd->OS2DefWindowProc(hWnd, message, wParam, lParam );
rc = wnd->OS2DefWindowProc(message, wParam, lParam );
wnd->SetHWND(0);
}
else
{
if ( wnd )
rc = wnd->OS2WindowProc(hWnd, message, wParam, lParam);
rc = wnd->OS2WindowProc(message, wParam, lParam);
else
rc = 0; //TODO: DefWindowProc( hWnd, message, wParam, lParam );
}
@ -1022,7 +1139,7 @@ MRESULT wxWndProc(HWND hWnd, ULONG message, MPARAM wParam, MPARAM lParam)
return rc;
}
MRESULT wxWindow::OS2WindowProc(HWND hWnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
MRESULT wxWindow::OS2WindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
// did we process the message?
bool processed = FALSE;