i can use
Code: Select all
ON KEY F1 ACTION
ON KEY SHIFT + F1 ACTION
ON KEY CONTROL + F1 ACTION
ON KEY ALT + F1 ACTION
how under harbour / HMB

Moderator: Rathinagiri
Code: Select all
ON KEY F1 ACTION
ON KEY SHIFT + F1 ACTION
ON KEY CONTROL + F1 ACTION
ON KEY ALT + F1 ACTION
Code: Select all
CASE nMsg == WM_LBUTTONDOWN
IF GET_STATE_VK_CONTROL()=.T.
...
IF GET_STATE_VK_SHIFT()=.T.
...
Code: Select all
HB_FUNC (GET_STATE_VK_SHIFT)
{
if (GetKeyState(VK_SHIFT) & 0x8000)
hb_retl (TRUE);
else
hb_retl (FALSE);
}
HB_FUNC (GET_STATE_VK_CONTROL)
{
if (GetKeyState(VK_CONTROL) & 0x8000)
hb_retl (TRUE);
else
hb_retl (FALSE);
}
HB_FUNC (GET_STATE_VK_ALT)
{
if (GetKeyState(VK_MENU) & 0x8000)
hb_retl (TRUE);
else
hb_retl (FALSE);
}
Code: Select all
#include <hmg.ch>
Function Main()
DEFINE WINDOW Form_1 AT 0 ,0 WIDTH 300 HEIGHT 500 TITLE "" MAIN
@10, 20 LABEL Info VALUE "Press Shift and/or Ctrl and/or Alt keys" AUTOSIZE
@50, 20 LABEL LeftShift VALUE "" AUTOSIZE
@85, 20 LABEL RightShift VALUE "" AUTOSIZE
@120, 20 LABEL Shift VALUE "" AUTOSIZE
@200, 20 LABEL LeftCtrl VALUE "" AUTOSIZE
@235, 20 LABEL RightCtrl VALUE "" AUTOSIZE
@270, 20 LABEL Ctrl VALUE "" AUTOSIZE
@350, 20 LABEL LeftAlt VALUE "" AUTOSIZE
@385, 20 LABEL RightAlt VALUE "" AUTOSIZE
@420, 20 LABEL Alt VALUE "" AUTOSIZE
ShowKeyStatus()
END WINDOW
CREATE EVENT PROCNAME KbdPress()
Form_1.Center
Form_1.Activate
Return NIL
************************************
FUNCTION KbdPress()
Local nMSG := EventMSG()
IF nMSG == WM_KEYDOWN .OR. nMSG == WM_KEYUP .OR. nMSG == WM_SYSKEYDOWN .OR. nMSG == WM_SYSKEYUP
ShowKeyStatus()
ENDIF
RETURN
FUNCTION ShowKeyStatus()
Form_1.LeftShift.VALUE := "Left Shift is " + IF (GetKeyState ( VK_LSHIFT ) < 0, 'PRESSED', 'released')
Form_1.RightShift.VALUE := "Right Shift is " + IF (GetKeyState ( VK_RSHIFT ) < 0, 'PRESSED', 'released')
Form_1.Shift.VALUE := "Any Shift is " + IF (GetKeyState ( VK_SHIFT ) < 0, 'PRESSED', 'released')
Form_1.LeftCtrl.VALUE := "Left Ctrl is " + IF (GetKeyState ( VK_LCONTROL ) < 0, 'PRESSED', 'released')
Form_1.RightCtrl.VALUE := "Right Ctrl is " + IF (GetKeyState ( VK_RCONTROL ) < 0, 'PRESSED', 'released')
Form_1.Ctrl.VALUE := "Any Ctrl is " + IF (GetKeyState ( VK_CONTROL ) < 0, 'PRESSED', 'released')
Form_1.LeftAlt.VALUE := "Left Alt is " + IF (GetKeyState ( VK_LMENU ) < 0, 'PRESSED', 'released')
Form_1.RightAlt.VALUE := "Right Alt is " + IF (GetKeyState ( VK_RMENU ) < 0, 'PRESSED', 'released')
Form_1.Alt.VALUE := "Any Alt is " + IF (GetKeyState ( VK_MENU ) < 0, 'PRESSED', 'released')
RETURN