as we know, in a dialog box Tab and Shift+Tab change focus between ctrls, Tab to the next one and Shift+Tab to the previous one. when handling the keyboard event generated, we see that both generates the same event with the same wParam (0x09) and lParam (0x000d0001).
so how a dialog figures out which one is hit? apparently by using the function GetKeyState at the moment of handling the message. alright?
now, in a system with no tab key i want to use Up and Down keys in the place of them. at this moment the problem gets produced.
in the PreTranslateMessage of my application, i just change wParam from VK_DOWN into VK_TAB. the PreTranslateMessage of the base class (CWinApp) thinks Tab is hit instead of Down arrow. this is the behavior i intend and it's ok. but what can i do when the user hits Up arrow and expect the previous ctrl gets focused?
do i need to use SetKeyboardState and this is the only way to simulate hitting Shift key?
what can i do?