![]() | Programming Guide | WideStudio/MWT Index Table of contents |
编辑范例事项过程的输入区域
使用回车键实行特定的事项过程
在事项过程中,试着启动特定的事项过程。这里,我们将启动名为”输入确定”的事项过程。//A sample of WSEV_KEY_HOOK trigger. #include "WSDkeyboard.h" void cbop(WSCbase* object){ (A)Get the pressed key. long key = WSGIappKeyboard()->getKey(); (B)If the key is return.. if (key == WSK_Return){ //Execute the procedure which name is "InputFixed". object->execProcedure("InputFixed"); } }(A)通过键盘取得正在输入的文字。
(B)判断输入值是否为回车键,如果是,在(C)启动名为”输入确定”的EP。 这种通过输入确认是否实行事项过程的方法,常常被使用于通过输入回车键确定动作的情况。输入文字时自动删除既有字符
接着制作当光标处开始输入新的文字时,该区域中既有字符自动删除的事项过程。大概的流程。如下。
- (1)移动到光标处,启动删除处理。
- (2)点击鼠标时,启动删除处理。
- (3)文字被键入时,如果删除处理已经被启动,删除既有文字。
- (1),(2),(3)的事项过程的子项目被初期化。
#include <WSDkeyboard.h> //To contain the last focused input field. static WSCbase* _focus_if = NULL; //(1)A sub-procedure with WSEV_FOCUS_CH static void _focus_on_(WSCbase* object){ //(A) Examine whether the Instance is focused. if (_focus_if != object && object->getFocus() != False){ //(B)It need to clear the string! //Set the clear flag True. object->setUserData("CLEAR TIMING",(void*)1); //(C)store that the last focused one is. _focus_if = object; } } //(2)A sub-procedure with WSEV_MOUSE_PRESS static void _btn_press_(WSCbase* object){ //(D) if clicked by the mouse pointer, // it needs to clear the string! // Set the clear flag True. object->setUserData("CLEAR TIMING",(void*)1); object->setProperty(WSNcursorPos,0); //(E)store that the last focused one is. _focus_if = object; } //(3)A sub-procedure with WSEV_KEY_PRESS static void _key_hook_(WSCbase* object){ //(F) See the clear flag to clear the last input string. long fl =(long)object->getUserData("CLEAR TIMING"); if (fl == 1){ long key = WSGIappKeyboard()->getKey(); //(G) Clear the string,if the key is not cursor key. if (key != WSK_标签 && key != WSK_Up && key != WSK_Down && key != WSK_Left && key != WSK_Right ){ //(H)Clear... object->setProperty(WSNlabelString,""); }else{ return; } } //(I)Set the clear flag False. object->setUserData("CLEAR TIMING",(void*)0); } //The main-procedure. //(4)Set the input field Instance with WSEV_INITIALIZE trigger. void ifdclr(WSCbase* object){ //Setup the sub-procedure(1) with WSEV_FOCUS_CH WSCprocedure* ac1 = new WSCprocedure("ac1",WSEV_FOCUS_CH); ac1->setFunction(_focus_ch_,"_focus_ch_"); object->addProcedure(ac1); //Setup the sub-procedure(2) with WSEV_MOUSE_PRESS WSCprocedure* ac2 = new WSCprocedure("ac2",WSEV_MOUSE_PRESS); ac2->setFunction(_btn_press_,"_btn_press_"); object->addProcedure(ac2); //Setup the sub-procedure(3) with WSEV_KEY_PRESS WSCprocedure* ac3 = new WSCprocedure("ac3",WSEV_KEY_HOOK); ac3->setFunction(_key_hook_,"_key_hook_"); object->addProcedure(ac3); }首先对光标关联的子项目EP进行说明。为了知道光标是否改变了位置,以静态变量预先保持上次光标位置。
(A),判断现位置与预先保持的位置是否不同。如果不同,即可知道光标被改变,在(B)处启动删除处理。然后在(C)处将该静态变量赋予自身。
然后对鼠标点击相关的子项目EP进行说明。在(D)处启动删除处理,并设定输入光标于前头。然后在(E)处将新的值赋予光标保持的静态变量中。
然后对键入关联的子项目EP进行说明。该子项目EP中,如果删除处理已被启动,将删除字符串,并结束删除处理。首先,在(F)处判断删除处理是否启动中。在(G)处辨别新输入文字,在(H)删除既有文字,在(I)处结束删除处理。
Copyright(C) WideStudio/MWT Development Team, 1999-2005 | Last modified: Jul 31, 2005 |