switch display when press SHIFT, CTRL or ALT ?

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

Post Reply
User avatar
AUGE_OHR
Posts: 2093
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

switch display when press SHIFT, CTRL or ALT ?

Post 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 :idea:
have fun
Jimmy
User avatar
danielmaximiliano
Posts: 2625
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: switch display when press SHIFT, CTRL or ALT ?

Post by danielmaximiliano »

*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
edk
Posts: 999
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: switch display when press SHIFT, CTRL or ALT ?

Post by edk »

Look at sample in HMG: c:\hmg.3.4.4\SAMPLES\Events\On_Key\ON_KEY_3\
User avatar
AUGE_OHR
Posts: 2093
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

Re: switch display when press SHIFT, CTRL or ALT ?

Post 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 :idea:
FxButtons.gif
FxButtons.gif (37.06 KiB) Viewed 1224 times
have fun
Jimmy
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: switch display when press SHIFT, CTRL or ALT ?

Post by andyglezl »

Maybe...

Code: Select all

		CASE nMsg == WM_LBUTTONDOWN
				IF GET_STATE_VK_CONTROL()=.T.
				     ...
				IF GET_STATE_VK_SHIFT()=.T.
				     ...
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
AUGE_OHR
Posts: 2093
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

Re: switch display when press SHIFT, CTRL or ALT ?

Post 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);
}
have fun
Jimmy
edk
Posts: 999
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: switch display when press SHIFT, CTRL or ALT ?

Post 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

Post Reply