Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Clark Lin
hw3d
Commits
335287f0
Commit
335287f0
authored
Dec 04, 2018
by
chili
Browse files
sexy WM_ logging
parent
1f0a4498
Changes
5
Show whitespace changes
Inline
Side-by-side
hw3d/WinMain.cpp
View file @
335287f0
#include <Windows.h>
#include "WindowsMessageMap.h"
LRESULT
CALLBACK
WndProc
(
HWND
hWnd
,
UINT
msg
,
WPARAM
wParam
,
LPARAM
lParam
)
{
static
WindowsMessageMap
mm
;
OutputDebugString
(
mm
(
msg
,
lParam
,
wParam
).
c_str
()
);
switch
(
msg
)
{
case
WM_CLOSE
:
...
...
hw3d/WindowsMessageMap.cpp
0 → 100644
View file @
335287f0
#include "WindowsMessageMap.h"
#include <Windows.h>
#include <string>
#include <sstream>
#include <iomanip>
// secret messages
#define WM_UAHDESTROYWINDOW 0x0090
#define WM_UAHDRAWMENU 0x0091
#define WM_UAHDRAWMENUITEM 0x0092
#define WM_UAHINITMENU 0x0093
#define WM_UAHMEASUREMENUITEM 0x0094
#define WM_UAHNCPAINTMENUPOPUP 0x0095
#define REGISTER_MESSAGE(msg){msg,#msg}
WindowsMessageMap
::
WindowsMessageMap
()
:
map
(
{
REGISTER_MESSAGE
(
WM_CREATE
),
REGISTER_MESSAGE
(
WM_DESTROY
),
REGISTER_MESSAGE
(
WM_MOVE
),
REGISTER_MESSAGE
(
WM_SIZE
),
REGISTER_MESSAGE
(
WM_ACTIVATE
),
REGISTER_MESSAGE
(
WM_SETFOCUS
),
REGISTER_MESSAGE
(
WM_KILLFOCUS
),
REGISTER_MESSAGE
(
WM_ENABLE
),
REGISTER_MESSAGE
(
WM_SETREDRAW
),
REGISTER_MESSAGE
(
WM_SETTEXT
),
REGISTER_MESSAGE
(
WM_GETTEXT
),
REGISTER_MESSAGE
(
WM_GETTEXTLENGTH
),
REGISTER_MESSAGE
(
WM_PAINT
),
REGISTER_MESSAGE
(
WM_CLOSE
),
REGISTER_MESSAGE
(
WM_QUERYENDSESSION
),
REGISTER_MESSAGE
(
WM_QUIT
),
REGISTER_MESSAGE
(
WM_QUERYOPEN
),
REGISTER_MESSAGE
(
WM_ERASEBKGND
),
REGISTER_MESSAGE
(
WM_SYSCOLORCHANGE
),
REGISTER_MESSAGE
(
WM_ENDSESSION
),
REGISTER_MESSAGE
(
WM_SHOWWINDOW
),
REGISTER_MESSAGE
(
WM_CTLCOLORMSGBOX
),
REGISTER_MESSAGE
(
WM_CTLCOLOREDIT
),
REGISTER_MESSAGE
(
WM_CTLCOLORLISTBOX
),
REGISTER_MESSAGE
(
WM_CTLCOLORBTN
),
REGISTER_MESSAGE
(
WM_CTLCOLORDLG
),
REGISTER_MESSAGE
(
WM_CTLCOLORSCROLLBAR
),
REGISTER_MESSAGE
(
WM_CTLCOLORSTATIC
),
REGISTER_MESSAGE
(
WM_WININICHANGE
),
REGISTER_MESSAGE
(
WM_SETTINGCHANGE
),
REGISTER_MESSAGE
(
WM_DEVMODECHANGE
),
REGISTER_MESSAGE
(
WM_ACTIVATEAPP
),
REGISTER_MESSAGE
(
WM_FONTCHANGE
),
REGISTER_MESSAGE
(
WM_TIMECHANGE
),
REGISTER_MESSAGE
(
WM_CANCELMODE
),
REGISTER_MESSAGE
(
WM_SETCURSOR
),
REGISTER_MESSAGE
(
WM_MOUSEACTIVATE
),
REGISTER_MESSAGE
(
WM_CHILDACTIVATE
),
REGISTER_MESSAGE
(
WM_QUEUESYNC
),
REGISTER_MESSAGE
(
WM_GETMINMAXINFO
),
REGISTER_MESSAGE
(
WM_ICONERASEBKGND
),
REGISTER_MESSAGE
(
WM_NEXTDLGCTL
),
REGISTER_MESSAGE
(
WM_SPOOLERSTATUS
),
REGISTER_MESSAGE
(
WM_DRAWITEM
),
REGISTER_MESSAGE
(
WM_MEASUREITEM
),
REGISTER_MESSAGE
(
WM_DELETEITEM
),
REGISTER_MESSAGE
(
WM_VKEYTOITEM
),
REGISTER_MESSAGE
(
WM_CHARTOITEM
),
REGISTER_MESSAGE
(
WM_SETFONT
),
REGISTER_MESSAGE
(
WM_GETFONT
),
REGISTER_MESSAGE
(
WM_QUERYDRAGICON
),
REGISTER_MESSAGE
(
WM_COMPAREITEM
),
REGISTER_MESSAGE
(
WM_COMPACTING
),
REGISTER_MESSAGE
(
WM_NCCREATE
),
REGISTER_MESSAGE
(
WM_NCDESTROY
),
REGISTER_MESSAGE
(
WM_NCCALCSIZE
),
REGISTER_MESSAGE
(
WM_NCHITTEST
),
REGISTER_MESSAGE
(
WM_NCPAINT
),
REGISTER_MESSAGE
(
WM_NCACTIVATE
),
REGISTER_MESSAGE
(
WM_GETDLGCODE
),
REGISTER_MESSAGE
(
WM_NCMOUSEMOVE
),
REGISTER_MESSAGE
(
WM_NCLBUTTONDOWN
),
REGISTER_MESSAGE
(
WM_NCLBUTTONUP
),
REGISTER_MESSAGE
(
WM_NCLBUTTONDBLCLK
),
REGISTER_MESSAGE
(
WM_NCRBUTTONDOWN
),
REGISTER_MESSAGE
(
WM_NCRBUTTONUP
),
REGISTER_MESSAGE
(
WM_NCRBUTTONDBLCLK
),
REGISTER_MESSAGE
(
WM_NCMBUTTONDOWN
),
REGISTER_MESSAGE
(
WM_NCMBUTTONUP
),
REGISTER_MESSAGE
(
WM_NCMBUTTONDBLCLK
),
REGISTER_MESSAGE
(
WM_KEYDOWN
),
REGISTER_MESSAGE
(
WM_KEYUP
),
REGISTER_MESSAGE
(
WM_CHAR
),
REGISTER_MESSAGE
(
WM_DEADCHAR
),
REGISTER_MESSAGE
(
WM_SYSKEYDOWN
),
REGISTER_MESSAGE
(
WM_SYSKEYUP
),
REGISTER_MESSAGE
(
WM_SYSCHAR
),
REGISTER_MESSAGE
(
WM_SYSDEADCHAR
),
REGISTER_MESSAGE
(
WM_KEYLAST
),
REGISTER_MESSAGE
(
WM_INITDIALOG
),
REGISTER_MESSAGE
(
WM_COMMAND
),
REGISTER_MESSAGE
(
WM_SYSCOMMAND
),
REGISTER_MESSAGE
(
WM_TIMER
),
REGISTER_MESSAGE
(
WM_HSCROLL
),
REGISTER_MESSAGE
(
WM_VSCROLL
),
REGISTER_MESSAGE
(
WM_INITMENU
),
REGISTER_MESSAGE
(
WM_INITMENUPOPUP
),
REGISTER_MESSAGE
(
WM_MENUSELECT
),
REGISTER_MESSAGE
(
WM_MENUCHAR
),
REGISTER_MESSAGE
(
WM_ENTERIDLE
),
REGISTER_MESSAGE
(
WM_MOUSEWHEEL
),
REGISTER_MESSAGE
(
WM_MOUSEMOVE
),
REGISTER_MESSAGE
(
WM_LBUTTONDOWN
),
REGISTER_MESSAGE
(
WM_LBUTTONUP
),
REGISTER_MESSAGE
(
WM_LBUTTONDBLCLK
),
REGISTER_MESSAGE
(
WM_RBUTTONDOWN
),
REGISTER_MESSAGE
(
WM_RBUTTONUP
),
REGISTER_MESSAGE
(
WM_RBUTTONDBLCLK
),
REGISTER_MESSAGE
(
WM_MBUTTONDOWN
),
REGISTER_MESSAGE
(
WM_MBUTTONUP
),
REGISTER_MESSAGE
(
WM_MBUTTONDBLCLK
),
REGISTER_MESSAGE
(
WM_PARENTNOTIFY
),
REGISTER_MESSAGE
(
WM_MDICREATE
),
REGISTER_MESSAGE
(
WM_MDIDESTROY
),
REGISTER_MESSAGE
(
WM_MDIACTIVATE
),
REGISTER_MESSAGE
(
WM_MDIRESTORE
),
REGISTER_MESSAGE
(
WM_MDINEXT
),
REGISTER_MESSAGE
(
WM_MDIMAXIMIZE
),
REGISTER_MESSAGE
(
WM_MDITILE
),
REGISTER_MESSAGE
(
WM_MDICASCADE
),
REGISTER_MESSAGE
(
WM_MDIICONARRANGE
),
REGISTER_MESSAGE
(
WM_MDIGETACTIVE
),
REGISTER_MESSAGE
(
WM_MDISETMENU
),
REGISTER_MESSAGE
(
WM_CUT
),
REGISTER_MESSAGE
(
WM_COPYDATA
),
REGISTER_MESSAGE
(
WM_COPY
),
REGISTER_MESSAGE
(
WM_PASTE
),
REGISTER_MESSAGE
(
WM_CLEAR
),
REGISTER_MESSAGE
(
WM_UNDO
),
REGISTER_MESSAGE
(
WM_RENDERFORMAT
),
REGISTER_MESSAGE
(
WM_RENDERALLFORMATS
),
REGISTER_MESSAGE
(
WM_DESTROYCLIPBOARD
),
REGISTER_MESSAGE
(
WM_DRAWCLIPBOARD
),
REGISTER_MESSAGE
(
WM_PAINTCLIPBOARD
),
REGISTER_MESSAGE
(
WM_VSCROLLCLIPBOARD
),
REGISTER_MESSAGE
(
WM_SIZECLIPBOARD
),
REGISTER_MESSAGE
(
WM_ASKCBFORMATNAME
),
REGISTER_MESSAGE
(
WM_CHANGECBCHAIN
),
REGISTER_MESSAGE
(
WM_HSCROLLCLIPBOARD
),
REGISTER_MESSAGE
(
WM_QUERYNEWPALETTE
),
REGISTER_MESSAGE
(
WM_PALETTEISCHANGING
),
REGISTER_MESSAGE
(
WM_PALETTECHANGED
),
REGISTER_MESSAGE
(
WM_DDE_INITIATE
),
REGISTER_MESSAGE
(
WM_DDE_TERMINATE
),
REGISTER_MESSAGE
(
WM_DDE_ADVISE
),
REGISTER_MESSAGE
(
WM_DDE_UNADVISE
),
REGISTER_MESSAGE
(
WM_DDE_ACK
),
REGISTER_MESSAGE
(
WM_DDE_DATA
),
REGISTER_MESSAGE
(
WM_DDE_REQUEST
),
REGISTER_MESSAGE
(
WM_DDE_POKE
),
REGISTER_MESSAGE
(
WM_DDE_EXECUTE
),
REGISTER_MESSAGE
(
WM_DROPFILES
),
REGISTER_MESSAGE
(
WM_POWER
),
REGISTER_MESSAGE
(
WM_WINDOWPOSCHANGED
),
REGISTER_MESSAGE
(
WM_WINDOWPOSCHANGING
),
REGISTER_MESSAGE
(
WM_HELP
),
REGISTER_MESSAGE
(
WM_NOTIFY
),
REGISTER_MESSAGE
(
WM_CONTEXTMENU
),
REGISTER_MESSAGE
(
WM_TCARD
),
REGISTER_MESSAGE
(
WM_MDIREFRESHMENU
),
REGISTER_MESSAGE
(
WM_MOVING
),
REGISTER_MESSAGE
(
WM_STYLECHANGED
),
REGISTER_MESSAGE
(
WM_STYLECHANGING
),
REGISTER_MESSAGE
(
WM_SIZING
),
REGISTER_MESSAGE
(
WM_SETHOTKEY
),
REGISTER_MESSAGE
(
WM_PRINT
),
REGISTER_MESSAGE
(
WM_PRINTCLIENT
),
REGISTER_MESSAGE
(
WM_POWERBROADCAST
),
REGISTER_MESSAGE
(
WM_HOTKEY
),
REGISTER_MESSAGE
(
WM_GETICON
),
REGISTER_MESSAGE
(
WM_EXITMENULOOP
),
REGISTER_MESSAGE
(
WM_ENTERMENULOOP
),
REGISTER_MESSAGE
(
WM_DISPLAYCHANGE
),
REGISTER_MESSAGE
(
WM_STYLECHANGED
),
REGISTER_MESSAGE
(
WM_STYLECHANGING
),
REGISTER_MESSAGE
(
WM_GETICON
),
REGISTER_MESSAGE
(
WM_SETICON
),
REGISTER_MESSAGE
(
WM_SIZING
),
REGISTER_MESSAGE
(
WM_MOVING
),
REGISTER_MESSAGE
(
WM_CAPTURECHANGED
),
REGISTER_MESSAGE
(
WM_DEVICECHANGE
),
REGISTER_MESSAGE
(
WM_PRINT
),
REGISTER_MESSAGE
(
WM_PRINTCLIENT
),
REGISTER_MESSAGE
(
WM_IME_SETCONTEXT
),
REGISTER_MESSAGE
(
WM_IME_NOTIFY
),
REGISTER_MESSAGE
(
WM_NCMOUSELEAVE
),
REGISTER_MESSAGE
(
WM_EXITSIZEMOVE
),
REGISTER_MESSAGE
(
WM_UAHDESTROYWINDOW
),
REGISTER_MESSAGE
(
WM_DWMNCRENDERINGCHANGED
),
REGISTER_MESSAGE
(
WM_ENTERSIZEMOVE
),
}
)
{}
std
::
string
WindowsMessageMap
::
operator
()(
DWORD
msg
,
LPARAM
lp
,
WPARAM
wp
)
const
{
constexpr
int
firstColWidth
=
25
;
const
auto
i
=
map
.
find
(
msg
);
std
::
ostringstream
oss
;
if
(
i
!=
map
.
end
()
)
{
oss
<<
std
::
left
<<
std
::
setw
(
firstColWidth
)
<<
i
->
second
<<
std
::
right
;
}
else
{
std
::
ostringstream
padss
;
padss
<<
"Unknown message: 0x"
<<
std
::
hex
<<
msg
;
oss
<<
std
::
left
<<
std
::
setw
(
firstColWidth
)
<<
padss
.
str
()
<<
std
::
right
;
}
oss
<<
" LP: 0x"
<<
std
::
hex
<<
std
::
setfill
(
'0'
)
<<
std
::
setw
(
8
)
<<
lp
;
oss
<<
" WP: 0x"
<<
std
::
hex
<<
std
::
setfill
(
'0'
)
<<
std
::
setw
(
8
)
<<
wp
<<
std
::
endl
;
return
oss
.
str
();
}
\ No newline at end of file
hw3d/WindowsMessageMap.h
0 → 100644
View file @
335287f0
#pragma once
#include <unordered_map>
#include <Windows.h>
class
WindowsMessageMap
{
public:
WindowsMessageMap
();
std
::
string
operator
()(
DWORD
msg
,
LPARAM
lp
,
WPARAM
wp
)
const
;
private:
std
::
unordered_map
<
DWORD
,
std
::
string
>
map
;
};
\ No newline at end of file
hw3d/hw3d.vcxproj
View file @
335287f0
...
...
@@ -145,8 +145,12 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile
Include=
"WindowsMessageMap.cpp"
/>
<ClCompile
Include=
"WinMain.cpp"
/>
</ItemGroup>
<ItemGroup>
<ClInclude
Include=
"WindowsMessageMap.h"
/>
</ItemGroup>
<Import
Project=
"$(VCTargetsPath)\Microsoft.Cpp.targets"
/>
<ImportGroup
Label=
"ExtensionTargets"
>
</ImportGroup>
...
...
hw3d/hw3d.vcxproj.filters
View file @
335287f0
...
...
@@ -18,5 +18,13 @@
<ClCompile
Include=
"WinMain.cpp"
>
<Filter>
Source Files
</Filter>
</ClCompile>
<ClCompile
Include=
"WindowsMessageMap.cpp"
>
<Filter>
Source Files
</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude
Include=
"WindowsMessageMap.h"
>
<Filter>
Header Files
</Filter>
</ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment