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

Implemented WindowFromDC for compat DCs

This commit is contained in:
narzoul 2016-03-19 16:16:13 +01:00
parent e8c5cd02d3
commit 8e456eafcb
3 changed files with 14 additions and 0 deletions

View File

@ -172,6 +172,13 @@ namespace CompatGdiDc
return compatDc.dc;
}
HDC getOrigDc(HDC dc)
{
const auto it = std::find_if(g_origDcToCompatDc.begin(), g_origDcToCompatDc.end(),
[dc](const CompatDcMap::value_type& compatDc) { return compatDc.second.dc == dc; });
return it != g_origDcToCompatDc.end() ? it->first : dc;
}
void releaseDc(HDC origDc)
{
CompatGdi::GdiScopedThreadLock gdiLock;

View File

@ -7,5 +7,6 @@
namespace CompatGdiDc
{
HDC getDc(HDC origDc);
HDC getOrigDc(HDC dc);
void releaseDc(HDC origDc);
}

View File

@ -101,6 +101,11 @@ namespace
{
return &compatGdiDcFunc<OrigFuncPtr, origFunc, Result, Params...>;
}
HWND WINAPI windowFromDc(HDC dc)
{
return CALL_ORIG_GDI(WindowFromDC)(CompatGdiDc::getOrigDc(dc));
}
}
#define HOOK_GDI_DC_FUNCTION(module, func) \
@ -147,6 +152,7 @@ namespace CompatGdiDcFunctions
// Device context functions
HOOK_GDI_DC_FUNCTION(gdi32, CreateCompatibleDC);
HOOK_GDI_DC_FUNCTION(gdi32, DrawEscape);
HOOK_GDI_FUNCTION(user32, WindowFromDC, windowFromDc);
// Filled shape functions
HOOK_GDI_DC_FUNCTION(gdi32, Chord);