mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Fixed display of check boxes and radio buttons
Fixes an issue with missing icons on check/radio buttons, reported in issue #15.
This commit is contained in:
parent
c63d36d831
commit
1af227afc4
@ -19,12 +19,41 @@ namespace
|
||||
LRESULT onPaint(HWND hwnd, WNDPROC origWndProc);
|
||||
LRESULT onPrint(HWND hwnd, UINT msg, HDC dc, LONG flags, WNDPROC origWndProc);
|
||||
|
||||
WNDPROC g_origButtonWndProc = nullptr;
|
||||
WNDPROC g_origComboListBoxWndProc = nullptr;
|
||||
WNDPROC g_origEditWndProc = nullptr;
|
||||
WNDPROC g_origListBoxWndProc = nullptr;
|
||||
WNDPROC g_origMenuWndProc = nullptr;
|
||||
WNDPROC g_origScrollBarWndProc = nullptr;
|
||||
|
||||
LRESULT WINAPI buttonWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
Compat::LogEnter("buttonWndProc", hwnd, msg, wParam, lParam);
|
||||
LRESULT result = 0;
|
||||
|
||||
switch (msg)
|
||||
{
|
||||
case WM_PAINT:
|
||||
result = onPaint(hwnd, g_origButtonWndProc);
|
||||
break;
|
||||
|
||||
case WM_ENABLE:
|
||||
case WM_SETTEXT:
|
||||
case BM_SETCHECK:
|
||||
case BM_SETSTATE:
|
||||
result = CallWindowProc(g_origButtonWndProc, hwnd, msg, wParam, lParam);
|
||||
RedrawWindow(hwnd, nullptr, nullptr, RDW_INVALIDATE | RDW_UPDATENOW);
|
||||
break;
|
||||
|
||||
default:
|
||||
result = CallWindowProc(g_origButtonWndProc, hwnd, msg, wParam, lParam);
|
||||
break;
|
||||
}
|
||||
|
||||
Compat::LogLeave("buttonWndProc", hwnd, msg, wParam, lParam) << result;
|
||||
return result;
|
||||
}
|
||||
|
||||
LRESULT WINAPI comboListBoxWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
return defPaintProc(hwnd, msg, wParam, lParam, g_origComboListBoxWndProc, "comboListBoxWndProc");
|
||||
@ -320,6 +349,7 @@ namespace Gdi
|
||||
{
|
||||
disableImmersiveContextMenus();
|
||||
|
||||
Gdi::hookWndProc("Button", g_origButtonWndProc, &buttonWndProc);
|
||||
Gdi::hookWndProc("ComboLBox", g_origComboListBoxWndProc, &comboListBoxWndProc);
|
||||
Gdi::hookWndProc("Edit", g_origEditWndProc, &editWndProc);
|
||||
Gdi::hookWndProc("ListBox", g_origListBoxWndProc, &listBoxWndProc);
|
||||
@ -334,6 +364,7 @@ namespace Gdi
|
||||
|
||||
void uninstallHooks()
|
||||
{
|
||||
Gdi::unhookWndProc("Button", g_origButtonWndProc);
|
||||
Gdi::unhookWndProc("ComboLBox", g_origComboListBoxWndProc);
|
||||
Gdi::unhookWndProc("Edit", g_origEditWndProc);
|
||||
Gdi::unhookWndProc("ListBox", g_origListBoxWndProc);
|
||||
|
Loading…
x
Reference in New Issue
Block a user