1
0
mirror of https://github.com/narzoul/DDrawCompat synced 2024-12-30 08:55:36 +01:00

Disabled DWM transitions and nonclient area rendering

Disabling DWM nonclient area rendering restores proper hit testing for the
non-themed caption buttons.
Transitions are disabled just in case.
This commit is contained in:
narzoul 2016-01-23 23:36:01 +01:00
parent e258a17b18
commit acd61bbed3
2 changed files with 20 additions and 3 deletions

View File

@ -1,5 +1,6 @@
#define WIN32_LEAN_AND_MEAN
#include <dwmapi.h>
#include <Windows.h>
#include "CompatGdi.h"
@ -9,6 +10,7 @@
namespace
{
void disableDwmAttributes(HWND hwnd);
void eraseBackground(HWND hwnd, HDC dc);
bool isScrollBarVisible(HWND hwnd, LONG windowStyles, LONG sbStyle, LONG sbObjectId);
void ncPaint(HWND hwnd);
@ -19,7 +21,11 @@ namespace
if (HC_ACTION == nCode)
{
auto ret = reinterpret_cast<CWPRETSTRUCT*>(lParam);
if (WM_ERASEBKGND == ret->message)
if (WM_CREATE == ret->message)
{
disableDwmAttributes(ret->hwnd);
}
else if (WM_ERASEBKGND == ret->message)
{
if (0 != ret->lResult)
{
@ -46,6 +52,17 @@ namespace
return CallNextHookEx(nullptr, nCode, wParam, lParam);
}
void disableDwmAttributes(HWND hwnd)
{
DWMNCRENDERINGPOLICY ncRenderingPolicy = DWMNCRP_DISABLED;
DwmSetWindowAttribute(hwnd, DWMWA_NCRENDERING_POLICY,
&ncRenderingPolicy, sizeof(ncRenderingPolicy));
BOOL disableTransitions = TRUE;
DwmSetWindowAttribute(hwnd, DWMWA_TRANSITIONS_FORCEDISABLED,
&disableTransitions, sizeof(disableTransitions));
}
void drawSizeBox(HWND hwnd, HDC compatDc, const RECT& windowRect, const RECT& clientRect)
{
LONG style = GetWindowLongPtr(hwnd, GWL_STYLE);

View File

@ -94,7 +94,7 @@
</ClCompile>
<Link>
<ModuleDefinitionFile>DDrawCompat.def</ModuleDefinitionFile>
<AdditionalDependencies>dxguid.lib;detours.lib;msimg32.lib;oleacc.lib;uxtheme.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>dxguid.lib;detours.lib;msimg32.lib;oleacc.lib;uxtheme.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -121,7 +121,7 @@
</ClCompile>
<Link>
<ModuleDefinitionFile>DDrawCompat.def</ModuleDefinitionFile>
<AdditionalDependencies>dxguid.lib;detours.lib;msimg32.lib;oleacc.lib;uxtheme.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>dxguid.lib;detours.lib;msimg32.lib;oleacc.lib;uxtheme.lib;dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>No</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>