From aeaeeaed4dc1d1dd368349a4996fc12ea0b8d9d4 Mon Sep 17 00:00:00 2001 From: narzoul Date: Sun, 26 Jan 2020 16:17:07 +0100 Subject: [PATCH] Log window message names --- DDrawCompat/Common/Log.cpp | 148 +-------- DDrawCompat/Common/Log.h | 37 +-- DDrawCompat/DDraw/ActivateAppHandler.cpp | 2 +- DDrawCompat/DDraw/Log.cpp | 53 ++++ DDrawCompat/DDraw/Log.h | 11 + DDrawCompat/DDrawCompat.vcxproj | 4 + DDrawCompat/DDrawCompat.vcxproj.filters | 12 + DDrawCompat/Gdi/PaintHandlers.cpp | 4 +- DDrawCompat/Gdi/Window.cpp | 4 +- DDrawCompat/Win32/Log.cpp | 374 +++++++++++++++++++++++ DDrawCompat/Win32/Log.h | 21 ++ 11 files changed, 497 insertions(+), 173 deletions(-) create mode 100644 DDrawCompat/DDraw/Log.cpp create mode 100644 DDrawCompat/DDraw/Log.h create mode 100644 DDrawCompat/Win32/Log.cpp create mode 100644 DDrawCompat/Win32/Log.h diff --git a/DDrawCompat/Common/Log.cpp b/DDrawCompat/Common/Log.cpp index c6870e7..b3ff596 100644 --- a/DDrawCompat/Common/Log.cpp +++ b/DDrawCompat/Common/Log.cpp @@ -1,29 +1,8 @@ -#define WIN32_LEAN_AND_MEAN - -#include -#include -#include -#include - -#include - -#include "Common/Hook.h" -#include "Common/Log.h" +#include namespace { Compat::CriticalSection g_logCs; - - template - 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(&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 rgnDataBuf(size); - auto& rgnData = *reinterpret_cast(rgnDataBuf.data()); - GetRegionData(&rgn, size, &rgnData); - - return os << "RGN" << Compat::array(reinterpret_cast(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(&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; } diff --git a/DDrawCompat/Common/Log.h b/DDrawCompat/Common/Log.h index 4289ac5..7a2a4f1 100644 --- a/DDrawCompat/Common/Log.h +++ b/DDrawCompat/Common/Log.h @@ -1,44 +1,33 @@ #pragma once -#include #include #include #include #include -#include "Common/ScopedCriticalSection.h" +#include -#define CONCAT_(a, b) a##b -#define CONCAT(a, b) CONCAT_(a, b) +#include +#include +#include #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 diff --git a/DDrawCompat/DDraw/ActivateAppHandler.cpp b/DDrawCompat/DDraw/ActivateAppHandler.cpp index 7506537..0330c31 100644 --- a/DDrawCompat/DDraw/ActivateAppHandler.cpp +++ b/DDrawCompat/DDraw/ActivateAppHandler.cpp @@ -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) diff --git a/DDrawCompat/DDraw/Log.cpp b/DDrawCompat/DDraw/Log.cpp new file mode 100644 index 0000000..45bd3b9 --- /dev/null +++ b/DDrawCompat/DDraw/Log.cpp @@ -0,0 +1,53 @@ +#include +#include + +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; +} diff --git a/DDrawCompat/DDraw/Log.h b/DDrawCompat/DDraw/Log.h new file mode 100644 index 0000000..6288609 --- /dev/null +++ b/DDrawCompat/DDraw/Log.h @@ -0,0 +1,11 @@ +#pragma once + +#include + +#include + +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); diff --git a/DDrawCompat/DDrawCompat.vcxproj b/DDrawCompat/DDrawCompat.vcxproj index 0308ee6..a205724 100644 --- a/DDrawCompat/DDrawCompat.vcxproj +++ b/DDrawCompat/DDrawCompat.vcxproj @@ -178,6 +178,7 @@ + @@ -223,6 +224,7 @@ + @@ -254,6 +256,7 @@ + @@ -287,6 +290,7 @@ + diff --git a/DDrawCompat/DDrawCompat.vcxproj.filters b/DDrawCompat/DDrawCompat.vcxproj.filters index 063710f..e11b4eb 100644 --- a/DDrawCompat/DDrawCompat.vcxproj.filters +++ b/DDrawCompat/DDrawCompat.vcxproj.filters @@ -357,6 +357,12 @@ Header Files\Direct3d + + Header Files\Win32 + + + Header Files\DDraw + @@ -545,6 +551,12 @@ Source Files\Direct3d + + Source Files\Win32 + + + Source Files\DDraw + diff --git a/DDrawCompat/Gdi/PaintHandlers.cpp b/DDrawCompat/Gdi/PaintHandlers.cpp index 6c814e5..3a7ae7a 100644 --- a/DDrawCompat/Gdi/PaintHandlers.cpp +++ b/DDrawCompat/Gdi/PaintHandlers.cpp @@ -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)); } diff --git a/DDrawCompat/Gdi/Window.cpp b/DDrawCompat/Gdi/Window.cpp index 2567fda..01d1160 100644 --- a/DDrawCompat/Gdi/Window.cpp +++ b/DDrawCompat/Gdi/Window.cpp @@ -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); } diff --git a/DDrawCompat/Win32/Log.cpp b/DDrawCompat/Win32/Log.cpp new file mode 100644 index 0000000..6c067b3 --- /dev/null +++ b/DDrawCompat/Win32/Log.cpp @@ -0,0 +1,374 @@ +#include + +#include +#include +#include + +namespace +{ + template + 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(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 rgnDataBuf(size); + auto& rgnData = *reinterpret_cast(rgnDataBuf.data()); + GetRegionData(rgn, size, &rgnData); + + return os << "RGN" << Compat::array(reinterpret_cast(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(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(); + } +} diff --git a/DDrawCompat/Win32/Log.h b/DDrawCompat/Win32/Log.h new file mode 100644 index 0000000..6a949ce --- /dev/null +++ b/DDrawCompat/Win32/Log.h @@ -0,0 +1,21 @@ +#pragma once + +#include +#include + +#include + +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); +}