more /Wp64 warning fixes: mostly use UINT_PTR instead of UINT and define our WX[WL]PARAM with __w64 if available to avoid hundreds of warnings when casting LPARAMs to pointers/handles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52165 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -212,6 +212,13 @@ WX_DECLARE_HASH_MAP(int, wxWindow::MSWMessageHandler,
|
||||
|
||||
static MSWMessageHandlers gs_messageHandlers;
|
||||
|
||||
// hash containing all our windows, it uses HWND keys and wxWindow* values
|
||||
WX_DECLARE_HASH_MAP(HWND, wxWindow *,
|
||||
wxPointerHash, wxPointerEqual,
|
||||
WindowHandles);
|
||||
|
||||
static WindowHandles gs_windowHandles;
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// private functions
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -227,7 +234,6 @@ LRESULT WXDLLEXPORT APIENTRY _EXPORT wxWndProc(HWND hWnd, UINT message,
|
||||
|
||||
void wxRemoveHandleAssociation(wxWindowMSW *win);
|
||||
extern void wxAssociateWinWithHandle(HWND hWnd, wxWindowMSW *win);
|
||||
wxWindow *wxFindWinFromHandle(WXHWND hWnd);
|
||||
|
||||
// get the text metrics for the current font
|
||||
static TEXTMETRIC wxGetTextMetrics(const wxWindowMSW *win);
|
||||
@@ -848,7 +854,7 @@ void wxWindowMSW::DoReleaseMouse()
|
||||
/* static */ wxWindow *wxWindowBase::GetCapture()
|
||||
{
|
||||
HWND hwnd = ::GetCapture();
|
||||
return hwnd ? wxFindWinFromHandle((WXHWND)hwnd) : (wxWindow *)NULL;
|
||||
return hwnd ? wxFindWinFromHandle(hwnd) : NULL;
|
||||
}
|
||||
|
||||
bool wxWindowMSW::SetFont(const wxFont& font)
|
||||
@@ -2350,7 +2356,7 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg)
|
||||
if ( (style & BS_OWNERDRAW) == BS_OWNERDRAW )
|
||||
{
|
||||
// emulate the button click
|
||||
btn = wxFindWinFromHandle((WXHWND)msg->hwnd);
|
||||
btn = wxFindWinFromHandle(msg->hwnd);
|
||||
}
|
||||
|
||||
bProcess = false;
|
||||
@@ -2641,11 +2647,11 @@ LRESULT WXDLLEXPORT APIENTRY _EXPORT wxWndProc(HWND hWnd, UINT message, WPARAM w
|
||||
// trace all messages - useful for the debugging
|
||||
#ifdef __WXDEBUG__
|
||||
wxLogTrace(wxTraceMessages,
|
||||
wxT("Processing %s(hWnd=%08lx, wParam=%8lx, lParam=%8lx)"),
|
||||
wxGetMessageName(message), (long)hWnd, (long)wParam, lParam);
|
||||
wxT("Processing %s(hWnd=%p, wParam=%08lx, lParam=%08lx)"),
|
||||
wxGetMessageName(message), hWnd, (long)wParam, lParam);
|
||||
#endif // __WXDEBUG__
|
||||
|
||||
wxWindowMSW *wnd = wxFindWinFromHandle((WXHWND) hWnd);
|
||||
wxWindowMSW *wnd = wxFindWinFromHandle(hWnd);
|
||||
|
||||
// when we get the first message for the HWND we just created, we associate
|
||||
// it with wxWindow stored in gs_winBeingCreated
|
||||
@@ -2781,11 +2787,11 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
|
||||
break;
|
||||
|
||||
case WM_SETFOCUS:
|
||||
processed = HandleSetFocus((WXHWND)(HWND)wParam);
|
||||
processed = HandleSetFocus((WXHWND)wParam);
|
||||
break;
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
processed = HandleKillFocus((WXHWND)(HWND)wParam);
|
||||
processed = HandleKillFocus((WXHWND)wParam);
|
||||
break;
|
||||
|
||||
case WM_PRINTCLIENT:
|
||||
@@ -3007,23 +3013,15 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
|
||||
// for these messages we must return true if process the message
|
||||
#ifdef WM_DRAWITEM
|
||||
case WM_DRAWITEM:
|
||||
case WM_MEASUREITEM:
|
||||
{
|
||||
int idCtrl = (UINT)wParam;
|
||||
if ( message == WM_DRAWITEM )
|
||||
{
|
||||
processed = MSWOnDrawItem(idCtrl,
|
||||
(WXDRAWITEMSTRUCT *)lParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
processed = MSWOnMeasureItem(idCtrl,
|
||||
(WXMEASUREITEMSTRUCT *)lParam);
|
||||
}
|
||||
processed = MSWOnDrawItem(wParam, (WXDRAWITEMSTRUCT *)lParam);
|
||||
if ( processed )
|
||||
rc.result = TRUE;
|
||||
break;
|
||||
|
||||
if ( processed )
|
||||
rc.result = TRUE;
|
||||
}
|
||||
case WM_MEASUREITEM:
|
||||
processed = MSWOnMeasureItem(wParam, (WXMEASUREITEMSTRUCT *)lParam);
|
||||
if ( processed )
|
||||
rc.result = TRUE;
|
||||
break;
|
||||
#endif // defined(WM_DRAWITEM)
|
||||
|
||||
@@ -3215,11 +3213,11 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
|
||||
#endif
|
||||
|
||||
case WM_PALETTECHANGED:
|
||||
processed = HandlePaletteChanged((WXHWND) (HWND) wParam);
|
||||
processed = HandlePaletteChanged((WXHWND)wParam);
|
||||
break;
|
||||
|
||||
case WM_CAPTURECHANGED:
|
||||
processed = HandleCaptureChanged((WXHWND) (HWND) lParam);
|
||||
processed = HandleCaptureChanged((WXHWND)lParam);
|
||||
break;
|
||||
|
||||
case WM_SETTINGCHANGE:
|
||||
@@ -3231,7 +3229,7 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
|
||||
break;
|
||||
|
||||
case WM_ERASEBKGND:
|
||||
processed = HandleEraseBkgnd((WXHDC)(HDC)wParam);
|
||||
processed = HandleEraseBkgnd((WXHDC)wParam);
|
||||
if ( processed )
|
||||
{
|
||||
// we processed the message, i.e. erased the background
|
||||
@@ -3246,7 +3244,7 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
|
||||
#endif
|
||||
|
||||
case WM_INITDIALOG:
|
||||
processed = HandleInitDialog((WXHWND)(HWND)wParam);
|
||||
processed = HandleInitDialog((WXHWND)wParam);
|
||||
|
||||
if ( processed )
|
||||
{
|
||||
@@ -3270,7 +3268,7 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
|
||||
#endif
|
||||
|
||||
case WM_SETCURSOR:
|
||||
processed = HandleSetCursor((WXHWND)(HWND)wParam,
|
||||
processed = HandleSetCursor((WXHWND)wParam,
|
||||
LOWORD(lParam), // hit test
|
||||
HIWORD(lParam)); // mouse msg
|
||||
|
||||
@@ -3355,9 +3353,10 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
|
||||
// we could have got an event from our child, reflect it back
|
||||
// to it if this is the case
|
||||
wxWindowMSW *win = NULL;
|
||||
if ( (WXHWND)wParam != m_hWnd )
|
||||
WXHWND hWnd = (WXHWND)wParam;
|
||||
if ( hWnd != m_hWnd )
|
||||
{
|
||||
win = FindItemByHWND((WXHWND)wParam);
|
||||
win = FindItemByHWND(hWnd);
|
||||
}
|
||||
|
||||
if ( !win )
|
||||
@@ -3409,30 +3408,33 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
|
||||
|
||||
// now alter the client size making room for drawing a themed border
|
||||
NCCALCSIZE_PARAMS *csparam = NULL;
|
||||
RECT rect;
|
||||
if (wParam)
|
||||
RECT *rect;
|
||||
if ( wParam )
|
||||
{
|
||||
csparam = (NCCALCSIZE_PARAMS*)lParam;
|
||||
rect = csparam->rgrc[0];
|
||||
csparam = (NCCALCSIZE_PARAMS *)lParam;
|
||||
rect = &csparam->rgrc[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
rect = *((RECT*)lParam);
|
||||
rect = (RECT *)lParam;
|
||||
}
|
||||
|
||||
wxUxThemeHandle hTheme((wxWindow *)this, L"EDIT");
|
||||
RECT rcClient = { 0, 0, 0, 0 };
|
||||
wxClientDC dc((wxWindow *)this);
|
||||
wxMSWDCImpl *impl = (wxMSWDCImpl*) dc.GetImpl();
|
||||
|
||||
if (theme->GetThemeBackgroundContentRect(
|
||||
hTheme, GetHdcOf(*impl), EP_EDITTEXT, ETS_NORMAL,
|
||||
&rect, &rcClient) == S_OK)
|
||||
if ( theme->GetThemeBackgroundContentRect
|
||||
(
|
||||
hTheme,
|
||||
GetHdcOf(*impl),
|
||||
EP_EDITTEXT,
|
||||
ETS_NORMAL,
|
||||
rect,
|
||||
&rcClient) == S_OK )
|
||||
{
|
||||
InflateRect(&rcClient, -1, -1);
|
||||
if (wParam)
|
||||
csparam->rgrc[0] = rcClient;
|
||||
else
|
||||
*((RECT*)lParam) = rcClient;
|
||||
*rect = rcClient;
|
||||
rc.result = WVR_REDRAW;
|
||||
}
|
||||
}
|
||||
@@ -3513,38 +3515,40 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l
|
||||
// wxWindow <-> HWND map
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxWinHashTable *wxWinHandleHash = NULL;
|
||||
|
||||
wxWindow *wxFindWinFromHandle(WXHWND hWnd)
|
||||
wxWindow *wxFindWinFromHandle(HWND hwnd)
|
||||
{
|
||||
return (wxWindow*)wxWinHandleHash->Get((long)hWnd);
|
||||
WindowHandles::const_iterator i = gs_windowHandles.find(hwnd);
|
||||
return i == gs_windowHandles.end() ? NULL : i->second;
|
||||
}
|
||||
|
||||
void wxAssociateWinWithHandle(HWND hWnd, wxWindowMSW *win)
|
||||
void wxAssociateWinWithHandle(HWND hwnd, wxWindowMSW *win)
|
||||
{
|
||||
// adding NULL hWnd is (first) surely a result of an error and
|
||||
// adding NULL hwnd is (first) surely a result of an error and
|
||||
// (secondly) breaks menu command processing
|
||||
wxCHECK_RET( hWnd != (HWND)NULL,
|
||||
wxT("attempt to add a NULL hWnd to window list ignored") );
|
||||
wxCHECK_RET( hwnd != (HWND)NULL,
|
||||
wxT("attempt to add a NULL hwnd to window list ignored") );
|
||||
|
||||
wxWindow *oldWin = wxFindWinFromHandle((WXHWND) hWnd);
|
||||
#ifdef __WXDEBUG__
|
||||
if ( oldWin && (oldWin != win) )
|
||||
WindowHandles::const_iterator i = gs_windowHandles.find(hwnd);
|
||||
if ( i != gs_windowHandles.end() )
|
||||
{
|
||||
wxLogDebug(wxT("HWND %X already associated with another window (%s)"),
|
||||
(int) hWnd, win->GetClassInfo()->GetClassName());
|
||||
if ( i->second != win )
|
||||
{
|
||||
wxLogDebug(wxT("HWND %p already associated with another window (%s)"),
|
||||
hwnd, win->GetClassInfo()->GetClassName());
|
||||
}
|
||||
//else: this actually happens currently because we associate the window
|
||||
// with its HWND during creation (if we create it) and also when
|
||||
// SubclassWin() is called later, this is ok
|
||||
}
|
||||
else
|
||||
#endif // __WXDEBUG__
|
||||
if (!oldWin)
|
||||
{
|
||||
wxWinHandleHash->Put((long)hWnd, (wxWindow *)win);
|
||||
}
|
||||
|
||||
gs_windowHandles[hwnd] = win;
|
||||
}
|
||||
|
||||
void wxRemoveHandleAssociation(wxWindowMSW *win)
|
||||
{
|
||||
wxWinHandleHash->Delete((long)win->GetHWND());
|
||||
gs_windowHandles.erase(GetHwndOf(win));
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -3686,7 +3690,7 @@ bool wxWindowMSW::MSWCreate(const wxChar *wclass,
|
||||
style,
|
||||
x, y, w, h,
|
||||
(HWND)MSWGetParent(),
|
||||
(HMENU)controlId,
|
||||
(HMENU)wxUIntToPtr(controlId),
|
||||
wxGetInstance(),
|
||||
NULL // no extra data
|
||||
);
|
||||
@@ -3716,7 +3720,7 @@ bool wxWindowMSW::HandleNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
|
||||
#ifndef __WXMICROWIN__
|
||||
LPNMHDR hdr = (LPNMHDR)lParam;
|
||||
HWND hWnd = hdr->hwndFrom;
|
||||
wxWindow *win = wxFindWinFromHandle((WXHWND)hWnd);
|
||||
wxWindow *win = wxFindWinFromHandle(hWnd);
|
||||
|
||||
// if the control is one of our windows, let it handle the message itself
|
||||
if ( win )
|
||||
@@ -5183,7 +5187,7 @@ static wxWindowMSW *FindWindowForMouseEvent(wxWindowMSW *win, int *x, int *y)
|
||||
::IsWindowVisible(hwndUnderMouse) &&
|
||||
::IsWindowEnabled(hwndUnderMouse) )
|
||||
{
|
||||
wxWindow *winUnderMouse = wxFindWinFromHandle((WXHWND)hwndUnderMouse);
|
||||
wxWindow *winUnderMouse = wxFindWinFromHandle(hwndUnderMouse);
|
||||
if ( winUnderMouse )
|
||||
{
|
||||
// translate the mouse coords to the other window coords
|
||||
@@ -6185,7 +6189,7 @@ wxWindow *wxGetActiveWindow()
|
||||
HWND hWnd = GetActiveWindow();
|
||||
if ( hWnd != 0 )
|
||||
{
|
||||
return wxFindWinFromHandle((WXHWND) hWnd);
|
||||
return wxFindWinFromHandle(hWnd);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -6200,7 +6204,7 @@ extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd)
|
||||
wxWindow *win = (wxWindow *)NULL;
|
||||
if ( hwnd )
|
||||
{
|
||||
win = wxFindWinFromHandle((WXHWND)hwnd);
|
||||
win = wxFindWinFromHandle(hwnd);
|
||||
if ( !win )
|
||||
{
|
||||
#if wxUSE_RADIOBOX
|
||||
@@ -6244,7 +6248,7 @@ extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd)
|
||||
#endif
|
||||
|
||||
hwnd = ::GetParent(hwnd);
|
||||
win = wxFindWinFromHandle((WXHWND)hwnd);
|
||||
win = wxFindWinFromHandle(hwnd);
|
||||
}
|
||||
|
||||
return win;
|
||||
|
Reference in New Issue
Block a user