Code: Select all
pushEvent( {
Event::KeyPressed,
Event::KeyEvent{
.code = virtualKeyCodeToSF( wParam, lParam ),
.alt = HIWORD( GetKeyState( VK_MENU ) ) != 0,
.control = HIWORD( GetKeyState( VK_CONTROL ) ) != 0,
.shift = HIWORD( GetKeyState( VK_SHIFT ) ) != 0,
.system = HIWORD( GetKeyState( VK_LWIN ) ) || HIWORD( GetKeyState( VK_RWIN ) )
} }
);
This would be equivalent to
Code: Select all
pushEvent( {
Event::KeyPressed,
Event::KeyEvent{
virtualKeyCodeToSF( wParam, lParam ),
HIWORD( GetKeyState( VK_MENU ) ) != 0,
HIWORD( GetKeyState( VK_CONTROL ) ) != 0,
HIWORD( GetKeyState( VK_SHIFT ) ) != 0,
HIWORD( GetKeyState( VK_LWIN ) ) || HIWORD( GetKeyState( VK_RWIN ) )
} }
);
But reads like and is as safe as:
Code: Select all
Event::KeyEvent kevent;
kevent.code = virtualKeyCodeToSF( wParam, lParam );
kevent.alt = HIWORD( GetKeyState( VK_MENU ) ) != 0
kevent.control = HIWORD( GetKeyState( VK_CONTROL ) ) != 0;
kevent.shift = HIWORD( GetKeyState( VK_SHIFT ) ) != 0;
kevent.system = HIWORD( GetKeyState( VK_LWIN ) ) || HIWORD( GetKeyState( VK_RWIN ) );
pushEvent( { Event::KeyPressed, kevent } );
I may have to give up on VS2017 now that more C++20 features are making it's way into VS2019.