mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Fixed scrollbars not updating when scrolling
The nonclient area is now also invalidated when scrolling. Added similar handling for WM_MOUSEWHEEL messages.
This commit is contained in:
parent
3007169592
commit
7555fb02d2
@ -10,7 +10,8 @@
|
|||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
void eraseBackground(HWND hwnd, HDC dc);
|
void eraseBackground(HWND hwnd, HDC dc);
|
||||||
void ncPaint(HWND wnd);
|
void ncPaint(HWND hwnd);
|
||||||
|
void updateScrolledWindow(HWND hwnd);
|
||||||
|
|
||||||
LRESULT CALLBACK callWndRetProc(int nCode, WPARAM wParam, LPARAM lParam)
|
LRESULT CALLBACK callWndRetProc(int nCode, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
@ -37,7 +38,7 @@ namespace
|
|||||||
}
|
}
|
||||||
else if (WM_VSCROLL == ret->message || WM_HSCROLL == ret->message)
|
else if (WM_VSCROLL == ret->message || WM_HSCROLL == ret->message)
|
||||||
{
|
{
|
||||||
InvalidateRect(ret->hwnd, nullptr, TRUE);
|
updateScrolledWindow(ret->hwnd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,6 +59,20 @@ namespace
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LRESULT CALLBACK mouseProc(int nCode, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
if (HC_ACTION == nCode)
|
||||||
|
{
|
||||||
|
auto mhs = reinterpret_cast<MOUSEHOOKSTRUCT*>(lParam);
|
||||||
|
if (WM_MOUSEWHEEL == wParam)
|
||||||
|
{
|
||||||
|
updateScrolledWindow(mhs->hwnd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return CallNextHookEx(nullptr, nCode, wParam, lParam);
|
||||||
|
}
|
||||||
|
|
||||||
void ncPaint(HWND hwnd)
|
void ncPaint(HWND hwnd)
|
||||||
{
|
{
|
||||||
if (!CompatGdi::beginGdiRendering())
|
if (!CompatGdi::beginGdiRendering())
|
||||||
@ -88,6 +103,11 @@ namespace
|
|||||||
ReleaseDC(hwnd, windowDc);
|
ReleaseDC(hwnd, windowDc);
|
||||||
CompatGdi::endGdiRendering();
|
CompatGdi::endGdiRendering();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void updateScrolledWindow(HWND hwnd)
|
||||||
|
{
|
||||||
|
RedrawWindow(hwnd, nullptr, nullptr, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace CompatGdiWinProc
|
namespace CompatGdiWinProc
|
||||||
@ -96,5 +116,6 @@ namespace CompatGdiWinProc
|
|||||||
{
|
{
|
||||||
const DWORD threadId = GetCurrentThreadId();
|
const DWORD threadId = GetCurrentThreadId();
|
||||||
SetWindowsHookEx(WH_CALLWNDPROCRET, callWndRetProc, nullptr, threadId);
|
SetWindowsHookEx(WH_CALLWNDPROCRET, callWndRetProc, nullptr, threadId);
|
||||||
|
SetWindowsHookEx(WH_MOUSE, &mouseProc, nullptr, threadId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user