X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b96340e6f457071d63196f877c6df0ea1cc2af04..2d19ad25782b1b370cd26d0f17d45856d201fc70:/src/msw/window.cpp diff --git a/src/msw/window.cpp b/src/msw/window.cpp index dbac074afc..c7b28bac0b 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -2384,6 +2384,29 @@ bool wxWindow::MSWCreate(int id, return FALSE; } + if (extendedStyle != 0) + { + ::SetWindowLong(GetHwnd(), GWL_EXSTYLE, extendedStyle); + ::SetWindowPos(GetHwnd(), NULL, 0, 0, 0, 0, + SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE); + } +#if defined(__WIN95__) + // For some reason, the system menu is activated when we use the + // WS_EX_CONTEXTHELP style, so let's set a reasonable icon + if (extendedStyle & WS_EX_CONTEXTHELP) + { + if (wxTheApp->GetTopWindow() && (wxTheApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame)))) + { + wxIcon icon = ((wxFrame*)wxTheApp->GetTopWindow())->GetIcon(); + if (icon.Ok()) + SendMessage(GetHwnd(), WM_SETICON, + (WPARAM)TRUE, (LPARAM)(HICON) icon.GetHICON()); + } + } +#endif // __WIN95__ + + + // JACS: is the following still necessary? The above seems to work. // ::SetWindowLong(GWL_EXSTYLE) doesn't work for the dialogs, so try // to take care of (at least some) extended style flags ourselves @@ -4361,3 +4384,38 @@ static TEXTMETRIC wxGetTextMetrics(const wxWindow *win) return tm; } + +// Find the wxWindow at the current mouse position, returning the mouse +// position. +wxWindow* wxFindWindowAtPointer(wxPoint& pt) +{ + return wxFindWindowAtPoint(wxGetMousePosition()); +} + +wxWindow* wxFindWindowAtPoint(const wxPoint& pt) +{ + POINT pt2; + pt2.x = pt.x; + pt2.y = pt.y; + HWND hWndHit = ::WindowFromPoint(pt2); + + wxWindow* win = wxFindWinFromHandle((WXHWND) hWndHit) ; + HWND hWnd = hWndHit; + + // Try to find a window with a wxWindow associated with it + while (!win && (hWnd != 0)) + { + hWnd = ::GetParent(hWnd); + win = wxFindWinFromHandle((WXHWND) hWnd) ; + } + return win; +} + +// Get the current mouse position. +wxPoint wxGetMousePosition() +{ + POINT pt; + GetCursorPos( & pt ); + return wxPoint(pt.x, pt.y); +} +