mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Log window message names
This commit is contained in:
parent
b898519aa0
commit
aeaeeaed4d
@ -1,29 +1,8 @@
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
|
||||
#include <codecvt>
|
||||
#include <iomanip>
|
||||
#include <locale>
|
||||
#include <vector>
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
#include "Common/Hook.h"
|
||||
#include "Common/Log.h"
|
||||
#include <Common/Log.h>
|
||||
|
||||
namespace
|
||||
{
|
||||
Compat::CriticalSection g_logCs;
|
||||
|
||||
template <typename DevMode>
|
||||
std::ostream& streamDevMode(std::ostream& os, const DevMode& dm)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< dm.dmPelsWidth
|
||||
<< dm.dmPelsHeight
|
||||
<< dm.dmBitsPerPel
|
||||
<< dm.dmDisplayFrequency
|
||||
<< dm.dmDisplayFlags;
|
||||
}
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, std::nullptr_t)
|
||||
@ -72,127 +51,6 @@ std::ostream& operator<<(std::ostream& os, const WCHAR* wstr)
|
||||
return os;
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DEVMODEA& dm)
|
||||
{
|
||||
return streamDevMode(os, dm);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DEVMODEW& dm)
|
||||
{
|
||||
return streamDevMode(os, dm);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const RECT& rect)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< rect.left
|
||||
<< rect.top
|
||||
<< rect.right
|
||||
<< rect.bottom;
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, HDC__& dc)
|
||||
{
|
||||
return os << "DC(" << static_cast<void*>(&dc) << ',' << CALL_ORIG_FUNC(WindowFromDC)(&dc) << ')';
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, HRGN__& rgn)
|
||||
{
|
||||
DWORD size = GetRegionData(&rgn, 0, nullptr);
|
||||
if (0 == size)
|
||||
{
|
||||
return os << "RGN[]";
|
||||
}
|
||||
|
||||
std::vector<unsigned char> rgnDataBuf(size);
|
||||
auto& rgnData = *reinterpret_cast<RGNDATA*>(rgnDataBuf.data());
|
||||
GetRegionData(&rgn, size, &rgnData);
|
||||
|
||||
return os << "RGN" << Compat::array(reinterpret_cast<RECT*>(rgnData.Buffer), rgnData.rdh.nCount);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, HWND__& hwnd)
|
||||
{
|
||||
char name[256] = "INVALID";
|
||||
RECT rect = {};
|
||||
if (IsWindow(&hwnd))
|
||||
{
|
||||
GetClassName(&hwnd, name, sizeof(name));
|
||||
GetWindowRect(&hwnd, &rect);
|
||||
}
|
||||
return os << "WND(" << static_cast<void*>(&hwnd) << ',' << name << ',' << rect << ')';
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDSCAPS& caps)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(caps.dwCaps);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDSCAPS2& caps)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(caps.dwCaps)
|
||||
<< Compat::hex(caps.dwCaps2)
|
||||
<< Compat::hex(caps.dwCaps3)
|
||||
<< Compat::hex(caps.dwCaps4);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDPIXELFORMAT& pf)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(pf.dwFlags)
|
||||
<< Compat::hex(pf.dwFourCC)
|
||||
<< pf.dwRGBBitCount
|
||||
<< Compat::hex(pf.dwRBitMask)
|
||||
<< Compat::hex(pf.dwGBitMask)
|
||||
<< Compat::hex(pf.dwBBitMask)
|
||||
<< Compat::hex(pf.dwRGBAlphaBitMask);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDSURFACEDESC& sd)
|
||||
{
|
||||
DDSURFACEDESC2 sd2 = {};
|
||||
memcpy(&sd2, &sd, sizeof(sd));
|
||||
return os << sd2;
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDSURFACEDESC2& sd)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(sd.dwFlags)
|
||||
<< sd.dwHeight
|
||||
<< sd.dwWidth
|
||||
<< sd.lPitch
|
||||
<< sd.dwBackBufferCount
|
||||
<< sd.dwMipMapCount
|
||||
<< sd.dwAlphaBitDepth
|
||||
<< sd.dwReserved
|
||||
<< sd.lpSurface
|
||||
<< sd.ddpfPixelFormat
|
||||
<< sd.ddsCaps
|
||||
<< sd.dwTextureStage;
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const CWPSTRUCT& cwrp)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(cwrp.message)
|
||||
<< cwrp.hwnd
|
||||
<< Compat::hex(cwrp.wParam)
|
||||
<< Compat::hex(cwrp.lParam);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const CWPRETSTRUCT& cwrp)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(cwrp.message)
|
||||
<< cwrp.hwnd
|
||||
<< Compat::hex(cwrp.wParam)
|
||||
<< Compat::hex(cwrp.lParam)
|
||||
<< Compat::hex(cwrp.lResult);
|
||||
}
|
||||
|
||||
namespace Compat
|
||||
{
|
||||
Log::Log() : m_lock(g_logCs)
|
||||
@ -217,8 +75,8 @@ namespace Compat
|
||||
}
|
||||
|
||||
thread_local DWORD Log::s_indent = 0;
|
||||
thread_local DWORD Log::s_outParamDepth = 0;
|
||||
thread_local bool Log::s_isLeaveLog = false;
|
||||
|
||||
std::ofstream Log::s_logFile("ddraw.log");
|
||||
DWORD Log::s_outParamDepth = 0;
|
||||
bool Log::s_isLeaveLog = false;
|
||||
}
|
||||
|
@ -1,44 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
#include <ddraw.h>
|
||||
#include <fstream>
|
||||
#include <functional>
|
||||
#include <ostream>
|
||||
#include <type_traits>
|
||||
|
||||
#include "Common/ScopedCriticalSection.h"
|
||||
#include <Windows.h>
|
||||
|
||||
#define CONCAT_(a, b) a##b
|
||||
#define CONCAT(a, b) CONCAT_(a, b)
|
||||
#include <Common/ScopedCriticalSection.h>
|
||||
#include <DDraw/Log.h>
|
||||
#include <Win32/Log.h>
|
||||
|
||||
#define LOG_FUNC(...) Compat::LogFunc logFunc(__VA_ARGS__)
|
||||
#define LOG_RESULT(...) logFunc.setResult(__VA_ARGS__)
|
||||
|
||||
#define LOG_ONCE(msg) \
|
||||
static bool CONCAT(isAlreadyLogged, __LINE__) = false; \
|
||||
if (!CONCAT(isAlreadyLogged, __LINE__)) \
|
||||
{ \
|
||||
Compat::Log() << msg; \
|
||||
CONCAT(isAlreadyLogged, __LINE__) = true; \
|
||||
static bool isAlreadyLogged = false; \
|
||||
if (!isAlreadyLogged) \
|
||||
{ \
|
||||
Compat::Log() << msg; \
|
||||
isAlreadyLogged = true; \
|
||||
} \
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, std::nullptr_t);
|
||||
std::ostream& operator<<(std::ostream& os, const char* str);
|
||||
std::ostream& operator<<(std::ostream& os, const unsigned char* data);
|
||||
std::ostream& operator<<(std::ostream& os, const WCHAR* wstr);
|
||||
std::ostream& operator<<(std::ostream& os, const DEVMODEA& dm);
|
||||
std::ostream& operator<<(std::ostream& os, const DEVMODEW& dm);
|
||||
std::ostream& operator<<(std::ostream& os, const RECT& rect);
|
||||
std::ostream& operator<<(std::ostream& os, HDC__& dc);
|
||||
std::ostream& operator<<(std::ostream& os, HRGN__& rgn);
|
||||
std::ostream& operator<<(std::ostream& os, HWND__& hwnd);
|
||||
std::ostream& operator<<(std::ostream& os, const DDSCAPS& caps);
|
||||
std::ostream& operator<<(std::ostream& os, const DDSCAPS2& caps);
|
||||
std::ostream& operator<<(std::ostream& os, const DDPIXELFORMAT& pf);
|
||||
std::ostream& operator<<(std::ostream& os, const DDSURFACEDESC& sd);
|
||||
std::ostream& operator<<(std::ostream& os, const DDSURFACEDESC2& sd);
|
||||
std::ostream& operator<<(std::ostream& os, const CWPSTRUCT& cwrp);
|
||||
std::ostream& operator<<(std::ostream& os, const CWPRETSTRUCT& cwrp);
|
||||
|
||||
namespace Compat
|
||||
{
|
||||
@ -191,10 +180,10 @@ namespace Compat
|
||||
ScopedCriticalSection m_lock;
|
||||
|
||||
static thread_local DWORD s_indent;
|
||||
static thread_local DWORD s_outParamDepth;
|
||||
static thread_local bool s_isLeaveLog;
|
||||
|
||||
static std::ofstream s_logFile;
|
||||
static DWORD s_outParamDepth;
|
||||
static bool s_isLeaveLog;
|
||||
};
|
||||
|
||||
class LogStruct : public detail::LogFirstParam
|
||||
@ -222,6 +211,7 @@ namespace Compat
|
||||
|
||||
~LogFunc()
|
||||
{
|
||||
Log::s_isLeaveLog = true;
|
||||
Log::s_indent -= 2;
|
||||
Log log;
|
||||
log << "< ";
|
||||
@ -232,6 +222,7 @@ namespace Compat
|
||||
log << " = ";
|
||||
m_printResult(log);
|
||||
}
|
||||
Log::s_isLeaveLog = false;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
@ -26,7 +26,7 @@ namespace
|
||||
|
||||
LRESULT CALLBACK ddWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LOG_FUNC("ddWndProc", hwnd, Compat::hex(uMsg), Compat::hex(wParam), Compat::hex(lParam));
|
||||
LOG_FUNC("ddWndProc", hwnd, Compat::logWm(uMsg), Compat::hex(wParam), Compat::hex(lParam));
|
||||
static bool isDisplayChangeNotificationEnabled = true;
|
||||
|
||||
switch (uMsg)
|
||||
|
53
DDrawCompat/DDraw/Log.cpp
Normal file
53
DDrawCompat/DDraw/Log.cpp
Normal file
@ -0,0 +1,53 @@
|
||||
#include <Common/Log.h>
|
||||
#include <DDraw/Log.h>
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDSCAPS& caps)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(caps.dwCaps);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDSCAPS2& caps)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(caps.dwCaps)
|
||||
<< Compat::hex(caps.dwCaps2)
|
||||
<< Compat::hex(caps.dwCaps3)
|
||||
<< Compat::hex(caps.dwCaps4);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDPIXELFORMAT& pf)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(pf.dwFlags)
|
||||
<< Compat::hex(pf.dwFourCC)
|
||||
<< pf.dwRGBBitCount
|
||||
<< Compat::hex(pf.dwRBitMask)
|
||||
<< Compat::hex(pf.dwGBitMask)
|
||||
<< Compat::hex(pf.dwBBitMask)
|
||||
<< Compat::hex(pf.dwRGBAlphaBitMask);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDSURFACEDESC& sd)
|
||||
{
|
||||
DDSURFACEDESC2 sd2 = {};
|
||||
memcpy(&sd2, &sd, sizeof(sd));
|
||||
return os << sd2;
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDSURFACEDESC2& sd)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::hex(sd.dwFlags)
|
||||
<< sd.dwHeight
|
||||
<< sd.dwWidth
|
||||
<< sd.lPitch
|
||||
<< sd.dwBackBufferCount
|
||||
<< sd.dwMipMapCount
|
||||
<< sd.dwAlphaBitDepth
|
||||
<< sd.dwReserved
|
||||
<< sd.lpSurface
|
||||
<< sd.ddpfPixelFormat
|
||||
<< sd.ddsCaps
|
||||
<< sd.dwTextureStage;
|
||||
}
|
11
DDrawCompat/DDraw/Log.h
Normal file
11
DDrawCompat/DDraw/Log.h
Normal file
@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <ostream>
|
||||
|
||||
#include <ddraw.h>
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DDSCAPS& caps);
|
||||
std::ostream& operator<<(std::ostream& os, const DDSCAPS2& caps);
|
||||
std::ostream& operator<<(std::ostream& os, const DDPIXELFORMAT& pf);
|
||||
std::ostream& operator<<(std::ostream& os, const DDSURFACEDESC& sd);
|
||||
std::ostream& operator<<(std::ostream& os, const DDSURFACEDESC2& sd);
|
@ -178,6 +178,7 @@
|
||||
<ClInclude Include="DDraw\DirectDrawPalette.h" />
|
||||
<ClInclude Include="DDraw\DirectDrawSurface.h" />
|
||||
<ClInclude Include="DDraw\Hooks.h" />
|
||||
<ClInclude Include="DDraw\Log.h" />
|
||||
<ClInclude Include="DDraw\ScopedThreadLock.h" />
|
||||
<ClInclude Include="DDraw\Surfaces\PrimarySurface.h" />
|
||||
<ClInclude Include="DDraw\Surfaces\PrimarySurfaceImpl.h" />
|
||||
@ -223,6 +224,7 @@
|
||||
<ClInclude Include="Gdi\WinProc.h" />
|
||||
<ClInclude Include="Win32\DisplayMode.h" />
|
||||
<ClInclude Include="Win32\FontSmoothing.h" />
|
||||
<ClInclude Include="Win32\Log.h" />
|
||||
<ClInclude Include="Win32\MsgHooks.h" />
|
||||
<ClInclude Include="Win32\Registry.h" />
|
||||
</ItemGroup>
|
||||
@ -254,6 +256,7 @@
|
||||
<ClCompile Include="DDraw\DirectDrawSurface.cpp" />
|
||||
<ClCompile Include="DDraw\Hooks.cpp" />
|
||||
<ClCompile Include="DDraw\IReleaseNotifier.cpp" />
|
||||
<ClCompile Include="DDraw\Log.cpp" />
|
||||
<ClCompile Include="DDraw\RealPrimarySurface.cpp" />
|
||||
<ClCompile Include="DDraw\Surfaces\PrimarySurface.cpp" />
|
||||
<ClCompile Include="DDraw\Surfaces\PrimarySurfaceImpl.cpp" />
|
||||
@ -287,6 +290,7 @@
|
||||
<ClCompile Include="Gdi\WinProc.cpp" />
|
||||
<ClCompile Include="Win32\DisplayMode.cpp" />
|
||||
<ClCompile Include="Win32\FontSmoothing.cpp" />
|
||||
<ClCompile Include="Win32\Log.cpp" />
|
||||
<ClCompile Include="Win32\MsgHooks.cpp" />
|
||||
<ClCompile Include="Win32\Registry.cpp" />
|
||||
</ItemGroup>
|
||||
|
@ -357,6 +357,12 @@
|
||||
<ClInclude Include="Direct3d\Log.h">
|
||||
<Filter>Header Files\Direct3d</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Win32\Log.h">
|
||||
<Filter>Header Files\Win32</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="DDraw\Log.h">
|
||||
<Filter>Header Files\DDraw</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Gdi\Gdi.cpp">
|
||||
@ -545,6 +551,12 @@
|
||||
<ClCompile Include="Direct3d\Log.cpp">
|
||||
<Filter>Source Files\Direct3d</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Win32\Log.cpp">
|
||||
<Filter>Source Files\Win32</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DDraw\Log.cpp">
|
||||
<Filter>Source Files\DDraw</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Dll\DDrawCompat.def">
|
||||
|
@ -162,7 +162,7 @@ namespace
|
||||
LRESULT defPaintProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, WNDPROC origWndProc,
|
||||
const char* origWndProcName)
|
||||
{
|
||||
LOG_FUNC(origWndProcName, hwnd, Compat::hex(msg), Compat::hex(wParam), Compat::hex(lParam));
|
||||
LOG_FUNC(origWndProcName, hwnd, Compat::logWm(msg), Compat::hex(wParam), Compat::hex(lParam));
|
||||
return LOG_RESULT(defPaintProc(hwnd, msg, wParam, lParam, origWndProc));
|
||||
}
|
||||
|
||||
@ -433,7 +433,7 @@ namespace
|
||||
LRESULT CALLBACK user32WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
|
||||
const std::string& procName, WndProcHook wndProcHook, WNDPROC oldWndProcTrampoline)
|
||||
{
|
||||
LOG_FUNC(procName.c_str(), hwnd, Compat::hex(uMsg), Compat::hex(wParam), Compat::hex(lParam));
|
||||
LOG_FUNC(procName.c_str(), hwnd, Compat::logWm(uMsg), Compat::hex(wParam), Compat::hex(lParam));
|
||||
return LOG_RESULT(wndProcHook(hwnd, uMsg, wParam, lParam, oldWndProcTrampoline));
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,7 @@ namespace
|
||||
|
||||
LRESULT CALLBACK messageWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LOG_FUNC("messageWindowProc", hwnd, Compat::hex(uMsg), Compat::hex(wParam), Compat::hex(lParam));
|
||||
LOG_FUNC("messageWindowProc", hwnd, Compat::logWm(uMsg), Compat::hex(wParam), Compat::hex(lParam));
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_CREATEPRESENTATIONWINDOW:
|
||||
@ -59,7 +59,7 @@ namespace
|
||||
|
||||
LRESULT CALLBACK presentationWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LOG_FUNC("presentationWindowProc", hwnd, Compat::hex(uMsg), Compat::hex(wParam), Compat::hex(lParam));
|
||||
LOG_FUNC("presentationWindowProc", hwnd, Compat::logWm(uMsg), Compat::hex(wParam), Compat::hex(lParam));
|
||||
return CALL_ORIG_FUNC(DefWindowProc)(hwnd, uMsg, wParam, lParam);
|
||||
}
|
||||
|
||||
|
374
DDrawCompat/Win32/Log.cpp
Normal file
374
DDrawCompat/Win32/Log.cpp
Normal file
@ -0,0 +1,374 @@
|
||||
#include <sstream>
|
||||
|
||||
#include <Common/Hook.h>
|
||||
#include <Common/Log.h>
|
||||
#include <Win32/Log.h>
|
||||
|
||||
namespace
|
||||
{
|
||||
template <typename DevMode>
|
||||
std::ostream& logDevMode(std::ostream& os, const DevMode& dm)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< dm.dmPelsWidth
|
||||
<< dm.dmPelsHeight
|
||||
<< dm.dmBitsPerPel
|
||||
<< dm.dmDisplayFrequency
|
||||
<< dm.dmDisplayFlags;
|
||||
}
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const CWPSTRUCT& cwrp)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::logWm(cwrp.message)
|
||||
<< cwrp.hwnd
|
||||
<< Compat::hex(cwrp.wParam)
|
||||
<< Compat::hex(cwrp.lParam);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const CWPRETSTRUCT& cwrp)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< Compat::logWm(cwrp.message)
|
||||
<< cwrp.hwnd
|
||||
<< Compat::hex(cwrp.wParam)
|
||||
<< Compat::hex(cwrp.lParam)
|
||||
<< Compat::hex(cwrp.lResult);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DEVMODEA& dm)
|
||||
{
|
||||
return logDevMode(os, dm);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const DEVMODEW& dm)
|
||||
{
|
||||
return logDevMode(os, dm);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, HDC dc)
|
||||
{
|
||||
if (!dc)
|
||||
{
|
||||
return os << "DC(null)";
|
||||
}
|
||||
return os << "DC(" << static_cast<void*>(dc) << ',' << CALL_ORIG_FUNC(WindowFromDC)(dc) << ')';
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, HRGN rgn)
|
||||
{
|
||||
if (!rgn)
|
||||
{
|
||||
return os << "RGN(null)";
|
||||
}
|
||||
|
||||
DWORD size = GetRegionData(rgn, 0, nullptr);
|
||||
if (0 == size)
|
||||
{
|
||||
return os << "RGN[]";
|
||||
}
|
||||
|
||||
std::vector<unsigned char> rgnDataBuf(size);
|
||||
auto& rgnData = *reinterpret_cast<RGNDATA*>(rgnDataBuf.data());
|
||||
GetRegionData(rgn, size, &rgnData);
|
||||
|
||||
return os << "RGN" << Compat::array(reinterpret_cast<RECT*>(rgnData.Buffer), rgnData.rdh.nCount);
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, HWND hwnd)
|
||||
{
|
||||
if (!hwnd)
|
||||
{
|
||||
return os << "WND(null)";
|
||||
}
|
||||
|
||||
char name[256] = "INVALID";
|
||||
RECT rect = {};
|
||||
if (IsWindow(hwnd))
|
||||
{
|
||||
GetClassName(hwnd, name, sizeof(name));
|
||||
GetWindowRect(hwnd, &rect);
|
||||
}
|
||||
return os << "WND(" << static_cast<void*>(hwnd) << ',' << name << ',' << rect << ')';
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const MSG& msg)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< msg.hwnd
|
||||
<< Compat::logWm(msg.message)
|
||||
<< Compat::hex(msg.wParam)
|
||||
<< Compat::hex(msg.lParam)
|
||||
<< msg.time
|
||||
<< msg.pt;
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const RECT& rect)
|
||||
{
|
||||
return Compat::LogStruct(os)
|
||||
<< rect.left
|
||||
<< rect.top
|
||||
<< rect.right
|
||||
<< rect.bottom;
|
||||
}
|
||||
|
||||
namespace Compat
|
||||
{
|
||||
std::string logWm(UINT msg)
|
||||
{
|
||||
#define LOG_WM_CASE(msg) case msg: return #msg;
|
||||
switch (msg)
|
||||
{
|
||||
LOG_WM_CASE(WM_NULL);
|
||||
LOG_WM_CASE(WM_CREATE);
|
||||
LOG_WM_CASE(WM_DESTROY);
|
||||
LOG_WM_CASE(WM_MOVE);
|
||||
LOG_WM_CASE(WM_SIZE);
|
||||
LOG_WM_CASE(WM_ACTIVATE);
|
||||
LOG_WM_CASE(WM_SETFOCUS);
|
||||
LOG_WM_CASE(WM_KILLFOCUS);
|
||||
LOG_WM_CASE(WM_ENABLE);
|
||||
LOG_WM_CASE(WM_SETREDRAW);
|
||||
LOG_WM_CASE(WM_SETTEXT);
|
||||
LOG_WM_CASE(WM_GETTEXT);
|
||||
LOG_WM_CASE(WM_GETTEXTLENGTH);
|
||||
LOG_WM_CASE(WM_PAINT);
|
||||
LOG_WM_CASE(WM_CLOSE);
|
||||
LOG_WM_CASE(WM_QUERYENDSESSION);
|
||||
LOG_WM_CASE(WM_QUERYOPEN);
|
||||
LOG_WM_CASE(WM_ENDSESSION);
|
||||
LOG_WM_CASE(WM_QUIT);
|
||||
LOG_WM_CASE(WM_ERASEBKGND);
|
||||
LOG_WM_CASE(WM_SYSCOLORCHANGE);
|
||||
LOG_WM_CASE(WM_SHOWWINDOW);
|
||||
LOG_WM_CASE(WM_SETTINGCHANGE);
|
||||
LOG_WM_CASE(WM_DEVMODECHANGE);
|
||||
LOG_WM_CASE(WM_ACTIVATEAPP);
|
||||
LOG_WM_CASE(WM_FONTCHANGE);
|
||||
LOG_WM_CASE(WM_TIMECHANGE);
|
||||
LOG_WM_CASE(WM_CANCELMODE);
|
||||
LOG_WM_CASE(WM_SETCURSOR);
|
||||
LOG_WM_CASE(WM_MOUSEACTIVATE);
|
||||
LOG_WM_CASE(WM_CHILDACTIVATE);
|
||||
LOG_WM_CASE(WM_QUEUESYNC);
|
||||
LOG_WM_CASE(WM_GETMINMAXINFO);
|
||||
LOG_WM_CASE(WM_PAINTICON);
|
||||
LOG_WM_CASE(WM_ICONERASEBKGND);
|
||||
LOG_WM_CASE(WM_NEXTDLGCTL);
|
||||
LOG_WM_CASE(WM_SPOOLERSTATUS);
|
||||
LOG_WM_CASE(WM_DRAWITEM);
|
||||
LOG_WM_CASE(WM_MEASUREITEM);
|
||||
LOG_WM_CASE(WM_DELETEITEM);
|
||||
LOG_WM_CASE(WM_VKEYTOITEM);
|
||||
LOG_WM_CASE(WM_CHARTOITEM);
|
||||
LOG_WM_CASE(WM_SETFONT);
|
||||
LOG_WM_CASE(WM_GETFONT);
|
||||
LOG_WM_CASE(WM_SETHOTKEY);
|
||||
LOG_WM_CASE(WM_GETHOTKEY);
|
||||
LOG_WM_CASE(WM_QUERYDRAGICON);
|
||||
LOG_WM_CASE(WM_COMPAREITEM);
|
||||
LOG_WM_CASE(WM_GETOBJECT);
|
||||
LOG_WM_CASE(WM_COMPACTING);
|
||||
LOG_WM_CASE(WM_COMMNOTIFY);
|
||||
LOG_WM_CASE(WM_WINDOWPOSCHANGING);
|
||||
LOG_WM_CASE(WM_WINDOWPOSCHANGED);
|
||||
LOG_WM_CASE(WM_POWER);
|
||||
LOG_WM_CASE(WM_COPYDATA);
|
||||
LOG_WM_CASE(WM_CANCELJOURNAL);
|
||||
LOG_WM_CASE(WM_NOTIFY);
|
||||
LOG_WM_CASE(WM_INPUTLANGCHANGEREQUEST);
|
||||
LOG_WM_CASE(WM_INPUTLANGCHANGE);
|
||||
LOG_WM_CASE(WM_TCARD);
|
||||
LOG_WM_CASE(WM_HELP);
|
||||
LOG_WM_CASE(WM_USERCHANGED);
|
||||
LOG_WM_CASE(WM_NOTIFYFORMAT);
|
||||
LOG_WM_CASE(WM_CONTEXTMENU);
|
||||
LOG_WM_CASE(WM_STYLECHANGING);
|
||||
LOG_WM_CASE(WM_STYLECHANGED);
|
||||
LOG_WM_CASE(WM_DISPLAYCHANGE);
|
||||
LOG_WM_CASE(WM_GETICON);
|
||||
LOG_WM_CASE(WM_SETICON);
|
||||
LOG_WM_CASE(WM_NCCREATE);
|
||||
LOG_WM_CASE(WM_NCDESTROY);
|
||||
LOG_WM_CASE(WM_NCCALCSIZE);
|
||||
LOG_WM_CASE(WM_NCHITTEST);
|
||||
LOG_WM_CASE(WM_NCPAINT);
|
||||
LOG_WM_CASE(WM_NCACTIVATE);
|
||||
LOG_WM_CASE(WM_GETDLGCODE);
|
||||
LOG_WM_CASE(WM_SYNCPAINT);
|
||||
LOG_WM_CASE(WM_NCMOUSEMOVE);
|
||||
LOG_WM_CASE(WM_NCLBUTTONDOWN);
|
||||
LOG_WM_CASE(WM_NCLBUTTONUP);
|
||||
LOG_WM_CASE(WM_NCLBUTTONDBLCLK);
|
||||
LOG_WM_CASE(WM_NCRBUTTONDOWN);
|
||||
LOG_WM_CASE(WM_NCRBUTTONUP);
|
||||
LOG_WM_CASE(WM_NCRBUTTONDBLCLK);
|
||||
LOG_WM_CASE(WM_NCMBUTTONDOWN);
|
||||
LOG_WM_CASE(WM_NCMBUTTONUP);
|
||||
LOG_WM_CASE(WM_NCMBUTTONDBLCLK);
|
||||
LOG_WM_CASE(WM_NCXBUTTONDOWN);
|
||||
LOG_WM_CASE(WM_NCXBUTTONUP);
|
||||
LOG_WM_CASE(WM_NCXBUTTONDBLCLK);
|
||||
LOG_WM_CASE(WM_INPUT_DEVICE_CHANGE);
|
||||
LOG_WM_CASE(WM_INPUT);
|
||||
LOG_WM_CASE(WM_KEYDOWN);
|
||||
LOG_WM_CASE(WM_KEYUP);
|
||||
LOG_WM_CASE(WM_CHAR);
|
||||
LOG_WM_CASE(WM_DEADCHAR);
|
||||
LOG_WM_CASE(WM_SYSKEYDOWN);
|
||||
LOG_WM_CASE(WM_SYSKEYUP);
|
||||
LOG_WM_CASE(WM_SYSCHAR);
|
||||
LOG_WM_CASE(WM_SYSDEADCHAR);
|
||||
LOG_WM_CASE(WM_UNICHAR);
|
||||
LOG_WM_CASE(WM_IME_STARTCOMPOSITION);
|
||||
LOG_WM_CASE(WM_IME_ENDCOMPOSITION);
|
||||
LOG_WM_CASE(WM_IME_COMPOSITION);
|
||||
LOG_WM_CASE(WM_INITDIALOG);
|
||||
LOG_WM_CASE(WM_COMMAND);
|
||||
LOG_WM_CASE(WM_SYSCOMMAND);
|
||||
LOG_WM_CASE(WM_TIMER);
|
||||
LOG_WM_CASE(WM_HSCROLL);
|
||||
LOG_WM_CASE(WM_VSCROLL);
|
||||
LOG_WM_CASE(WM_INITMENU);
|
||||
LOG_WM_CASE(WM_INITMENUPOPUP);
|
||||
LOG_WM_CASE(WM_GESTURE);
|
||||
LOG_WM_CASE(WM_GESTURENOTIFY);
|
||||
LOG_WM_CASE(WM_MENUSELECT);
|
||||
LOG_WM_CASE(WM_MENUCHAR);
|
||||
LOG_WM_CASE(WM_ENTERIDLE);
|
||||
LOG_WM_CASE(WM_MENURBUTTONUP);
|
||||
LOG_WM_CASE(WM_MENUDRAG);
|
||||
LOG_WM_CASE(WM_MENUGETOBJECT);
|
||||
LOG_WM_CASE(WM_UNINITMENUPOPUP);
|
||||
LOG_WM_CASE(WM_MENUCOMMAND);
|
||||
LOG_WM_CASE(WM_CHANGEUISTATE);
|
||||
LOG_WM_CASE(WM_UPDATEUISTATE);
|
||||
LOG_WM_CASE(WM_QUERYUISTATE);
|
||||
LOG_WM_CASE(WM_CTLCOLORMSGBOX);
|
||||
LOG_WM_CASE(WM_CTLCOLOREDIT);
|
||||
LOG_WM_CASE(WM_CTLCOLORLISTBOX);
|
||||
LOG_WM_CASE(WM_CTLCOLORBTN);
|
||||
LOG_WM_CASE(WM_CTLCOLORDLG);
|
||||
LOG_WM_CASE(WM_CTLCOLORSCROLLBAR);
|
||||
LOG_WM_CASE(WM_CTLCOLORSTATIC);
|
||||
LOG_WM_CASE(MN_GETHMENU);
|
||||
LOG_WM_CASE(WM_MOUSEMOVE);
|
||||
LOG_WM_CASE(WM_LBUTTONDOWN);
|
||||
LOG_WM_CASE(WM_LBUTTONUP);
|
||||
LOG_WM_CASE(WM_LBUTTONDBLCLK);
|
||||
LOG_WM_CASE(WM_RBUTTONDOWN);
|
||||
LOG_WM_CASE(WM_RBUTTONUP);
|
||||
LOG_WM_CASE(WM_RBUTTONDBLCLK);
|
||||
LOG_WM_CASE(WM_MBUTTONDOWN);
|
||||
LOG_WM_CASE(WM_MBUTTONUP);
|
||||
LOG_WM_CASE(WM_MBUTTONDBLCLK);
|
||||
LOG_WM_CASE(WM_MOUSEWHEEL);
|
||||
LOG_WM_CASE(WM_XBUTTONDOWN);
|
||||
LOG_WM_CASE(WM_XBUTTONUP);
|
||||
LOG_WM_CASE(WM_XBUTTONDBLCLK);
|
||||
LOG_WM_CASE(WM_MOUSEHWHEEL);
|
||||
LOG_WM_CASE(WM_PARENTNOTIFY);
|
||||
LOG_WM_CASE(WM_ENTERMENULOOP);
|
||||
LOG_WM_CASE(WM_EXITMENULOOP);
|
||||
LOG_WM_CASE(WM_NEXTMENU);
|
||||
LOG_WM_CASE(WM_SIZING);
|
||||
LOG_WM_CASE(WM_CAPTURECHANGED);
|
||||
LOG_WM_CASE(WM_MOVING);
|
||||
LOG_WM_CASE(WM_POWERBROADCAST);
|
||||
LOG_WM_CASE(WM_DEVICECHANGE);
|
||||
LOG_WM_CASE(WM_MDICREATE);
|
||||
LOG_WM_CASE(WM_MDIDESTROY);
|
||||
LOG_WM_CASE(WM_MDIACTIVATE);
|
||||
LOG_WM_CASE(WM_MDIRESTORE);
|
||||
LOG_WM_CASE(WM_MDINEXT);
|
||||
LOG_WM_CASE(WM_MDIMAXIMIZE);
|
||||
LOG_WM_CASE(WM_MDITILE);
|
||||
LOG_WM_CASE(WM_MDICASCADE);
|
||||
LOG_WM_CASE(WM_MDIICONARRANGE);
|
||||
LOG_WM_CASE(WM_MDIGETACTIVE);
|
||||
LOG_WM_CASE(WM_MDISETMENU);
|
||||
LOG_WM_CASE(WM_ENTERSIZEMOVE);
|
||||
LOG_WM_CASE(WM_EXITSIZEMOVE);
|
||||
LOG_WM_CASE(WM_DROPFILES);
|
||||
LOG_WM_CASE(WM_MDIREFRESHMENU);
|
||||
LOG_WM_CASE(WM_POINTERDEVICECHANGE);
|
||||
LOG_WM_CASE(WM_POINTERDEVICEINRANGE);
|
||||
LOG_WM_CASE(WM_POINTERDEVICEOUTOFRANGE);
|
||||
LOG_WM_CASE(WM_TOUCH);
|
||||
LOG_WM_CASE(WM_NCPOINTERUPDATE);
|
||||
LOG_WM_CASE(WM_NCPOINTERDOWN);
|
||||
LOG_WM_CASE(WM_NCPOINTERUP);
|
||||
LOG_WM_CASE(WM_POINTERUPDATE);
|
||||
LOG_WM_CASE(WM_POINTERDOWN);
|
||||
LOG_WM_CASE(WM_POINTERUP);
|
||||
LOG_WM_CASE(WM_POINTERENTER);
|
||||
LOG_WM_CASE(WM_POINTERLEAVE);
|
||||
LOG_WM_CASE(WM_POINTERACTIVATE);
|
||||
LOG_WM_CASE(WM_POINTERCAPTURECHANGED);
|
||||
LOG_WM_CASE(WM_TOUCHHITTESTING);
|
||||
LOG_WM_CASE(WM_POINTERWHEEL);
|
||||
LOG_WM_CASE(WM_POINTERHWHEEL);
|
||||
LOG_WM_CASE(DM_POINTERHITTEST);
|
||||
LOG_WM_CASE(WM_POINTERROUTEDTO);
|
||||
LOG_WM_CASE(WM_POINTERROUTEDAWAY);
|
||||
LOG_WM_CASE(WM_POINTERROUTEDRELEASED);
|
||||
LOG_WM_CASE(WM_IME_SETCONTEXT);
|
||||
LOG_WM_CASE(WM_IME_NOTIFY);
|
||||
LOG_WM_CASE(WM_IME_CONTROL);
|
||||
LOG_WM_CASE(WM_IME_COMPOSITIONFULL);
|
||||
LOG_WM_CASE(WM_IME_SELECT);
|
||||
LOG_WM_CASE(WM_IME_CHAR);
|
||||
LOG_WM_CASE(WM_IME_REQUEST);
|
||||
LOG_WM_CASE(WM_IME_KEYDOWN);
|
||||
LOG_WM_CASE(WM_IME_KEYUP);
|
||||
LOG_WM_CASE(WM_NCMOUSEHOVER);
|
||||
LOG_WM_CASE(WM_MOUSEHOVER);
|
||||
LOG_WM_CASE(WM_NCMOUSELEAVE);
|
||||
LOG_WM_CASE(WM_MOUSELEAVE);
|
||||
LOG_WM_CASE(WM_WTSSESSION_CHANGE);
|
||||
LOG_WM_CASE(WM_DPICHANGED);
|
||||
LOG_WM_CASE(WM_DPICHANGED_BEFOREPARENT);
|
||||
LOG_WM_CASE(WM_DPICHANGED_AFTERPARENT);
|
||||
LOG_WM_CASE(WM_GETDPISCALEDSIZE);
|
||||
LOG_WM_CASE(WM_CUT);
|
||||
LOG_WM_CASE(WM_COPY);
|
||||
LOG_WM_CASE(WM_PASTE);
|
||||
LOG_WM_CASE(WM_CLEAR);
|
||||
LOG_WM_CASE(WM_UNDO);
|
||||
LOG_WM_CASE(WM_RENDERFORMAT);
|
||||
LOG_WM_CASE(WM_RENDERALLFORMATS);
|
||||
LOG_WM_CASE(WM_DESTROYCLIPBOARD);
|
||||
LOG_WM_CASE(WM_DRAWCLIPBOARD);
|
||||
LOG_WM_CASE(WM_PAINTCLIPBOARD);
|
||||
LOG_WM_CASE(WM_VSCROLLCLIPBOARD);
|
||||
LOG_WM_CASE(WM_SIZECLIPBOARD);
|
||||
LOG_WM_CASE(WM_ASKCBFORMATNAME);
|
||||
LOG_WM_CASE(WM_CHANGECBCHAIN);
|
||||
LOG_WM_CASE(WM_HSCROLLCLIPBOARD);
|
||||
LOG_WM_CASE(WM_QUERYNEWPALETTE);
|
||||
LOG_WM_CASE(WM_PALETTEISCHANGING);
|
||||
LOG_WM_CASE(WM_PALETTECHANGED);
|
||||
LOG_WM_CASE(WM_HOTKEY);
|
||||
LOG_WM_CASE(WM_PRINT);
|
||||
LOG_WM_CASE(WM_PRINTCLIENT);
|
||||
LOG_WM_CASE(WM_APPCOMMAND);
|
||||
LOG_WM_CASE(WM_THEMECHANGED);
|
||||
LOG_WM_CASE(WM_CLIPBOARDUPDATE);
|
||||
LOG_WM_CASE(WM_DWMCOMPOSITIONCHANGED);
|
||||
LOG_WM_CASE(WM_DWMNCRENDERINGCHANGED);
|
||||
LOG_WM_CASE(WM_DWMCOLORIZATIONCOLORCHANGED);
|
||||
LOG_WM_CASE(WM_DWMWINDOWMAXIMIZEDCHANGE);
|
||||
LOG_WM_CASE(WM_DWMSENDICONICTHUMBNAIL);
|
||||
LOG_WM_CASE(WM_DWMSENDICONICLIVEPREVIEWBITMAP);
|
||||
LOG_WM_CASE(WM_GETTITLEBARINFOEX);
|
||||
};
|
||||
#undef LOG_WM_CASE
|
||||
|
||||
std::ostringstream oss;
|
||||
oss.width(4);
|
||||
oss.fill('0');
|
||||
oss << "WM_" << std::hex << msg;
|
||||
return oss.str();
|
||||
}
|
||||
}
|
21
DDrawCompat/Win32/Log.h
Normal file
21
DDrawCompat/Win32/Log.h
Normal file
@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const CWPSTRUCT& cwrp);
|
||||
std::ostream& operator<<(std::ostream& os, const CWPRETSTRUCT& cwrp);
|
||||
std::ostream& operator<<(std::ostream& os, const DEVMODEA& dm);
|
||||
std::ostream& operator<<(std::ostream& os, const DEVMODEW& dm);
|
||||
std::ostream& operator<<(std::ostream& os, HDC dc);
|
||||
std::ostream& operator<<(std::ostream& os, HRGN rgn);
|
||||
std::ostream& operator<<(std::ostream& os, HWND hwnd);
|
||||
std::ostream& operator<<(std::ostream& os, const MSG& msg);
|
||||
std::ostream& operator<<(std::ostream& os, const RECT& rect);
|
||||
|
||||
namespace Compat
|
||||
{
|
||||
std::string logWm(UINT msg);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user