Re: onKeyDown
- Posted by Dan B Moyer <DANMOYER at PRODIGY.NET> Aug 16, 2000
- 460 views
Bob, Although I'm anything but an expert, it looks to me that at least as far as what you've said, what you're doing is perfectly correct. If it will help you debug your efforts, here's some code that demonstrates what you want; I included two ways to do it, one with nexted if's to allow for various <ctrl>key combos, and then one for just <ctrl>right arrow using "if-and" just like you did (last example overwrites the first): <tested code follows:> -- demonstrates using the arrow keys in conjunction with <control> key: include Win32Lib.ew without warning constant MainWin = create(Window,"Press Arrow Keys and <control>key together",0,0,0,400,400,0) -------------------------------------------------------------------- procedure MainWin_onKeyDown ( int scanCode, int shift ) -- first way provides for any arrow key plus <control>: -- IF CONTROL KEY PRESSED: if and_bits(shift,ControlMask) then -- control key pressed -- if control key and AN ARROW KEY PRESSED: -- UP ARROW if scanCode = VK_UP then repaintWindow(MainWin) wPuts(MainWin,"<control>up arrow") -- DOWN ARROW elsif scanCode = VK_DOWN then repaintWindow(MainWin) wPuts(MainWin,"<control>down arrow") -- LEFT ARROW elsif scanCode = VK_LEFT then repaintWindow(MainWin) wPuts(MainWin,"<control>left arrow") -- RIGHT ARROW elsif scanCode = VK_RIGHT then repaintWindow(MainWin) wPuts(MainWin,"<control>right arrow") end if end if -- second way uses combined if test for <control> & right arrow: if and_bits(shift,ControlMask) and scanCode = VK_RIGHT then repaintWindow(MainWin) wPuts(MainWin,"second way works too: <control>right arrow") end if end procedure ------------------------------------------------------------ onKeyDown[MainWin] = routine_id("MainWin_onKeyDown") ----------------------------------------------------------- WinMain( MainWin, Normal ) <code ends> HTH, Dan Moyer ----- Original Message ----- From: "bobspringett" <bobspringett at WANADOO.FR> To: <EUPHORIA at LISTSERV.MUOHIO.EDU> Sent: Tuesday, August 15, 2000 10:02 AM Subject: onKeyDown > I am trying to call a procedure using the onKeyDown(scanCode,shift) function . In the proc I'm using 'if and_bits(shift,ControlMask) > and scanCode=VK_RIGHT then' > "do something". > When holding down the CTRL +RIGHTARROW KEY nothing happens. > However when I hold down SHIFT CTRL ALT + RIGHTARROW KEY it works. Seems like I've got the ControlMask screwed up. Can someone help > me please. > Regards > Bob