Page 1 of 1
switch display when press SHIFT, CTRL or ALT ?
Posted: Fri Feb 19, 2021 1:44 pm
by AUGE_OHR
hi,
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
now i like to "show" right Button when press SHIFT or CTRL or ALT
how under harbour / HMB

Re: switch display when press SHIFT, CTRL or ALT ?
Posted: Fri Feb 19, 2021 2:19 pm
by danielmaximiliano
Re: switch display when press SHIFT, CTRL or ALT ?
Posted: Fri Feb 19, 2021 2:58 pm
by edk
Look at sample in HMG: c:\hmg.3.4.4\SAMPLES\Events\On_Key\ON_KEY_3\
Re: switch display when press SHIFT, CTRL or ALT ?
Posted: Fri Feb 19, 2021 4:09 pm
by AUGE_OHR
hi,
thx for Answer
Serge Sample show how to use Macro with Fx Key
Edward Sample show how to get Event and "Key"
i want 4 x 11 (12) Fx Key and show SHIFT, CTRL and ALT Button when Press before Fx Key
how can i realize it under harbour / HMG

- FxButtons.gif (37.06 KiB) Viewed 1218 times
Re: switch display when press SHIFT, CTRL or ALT ?
Posted: Fri Feb 19, 2021 6:43 pm
by andyglezl
Maybe...
Code: Select all
CASE nMsg == WM_LBUTTONDOWN
IF GET_STATE_VK_CONTROL()=.T.
...
IF GET_STATE_VK_SHIFT()=.T.
...
Re: switch display when press SHIFT, CTRL or ALT ?
Posted: Fri Feb 19, 2021 7:25 pm
by AUGE_OHR
hi,
have found HB_FUNC in c:\
MiniGUI\SAMPLES\Advanced\ReadKey\demo.prg, thx
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);
}
Re: switch display when press SHIFT, CTRL or ALT ?
Posted: Fri Feb 19, 2021 9:14 pm
by edk
You can also check left and right Shift/Ctrl/Alt keys
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