WideStudio/MWT Logo
WideStudio/MWT
Programming Guide
WideStudio/MWT Index
Table of contents


»ùÇà À̺¥Æ® ÇÁ·Î½ÃÀú:ÀÔ·Â ÇʵåÆí



EnterÅ°·Î ƯÁ¤ÀÇ À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇϱ⿡´Â

À̺¥Æ® ÇÁ·Î½ÃÀú¿¡¼­ ƯÁ¤ÀÇ À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ±âµ¿Çϵµ·Ï Çعý½Ã´Ù. ¿©±â¼­´Â EnterÅ°ÀÇ ÀÔ·ÂÀ¸·Î "ÀÔ·ÂÈ®Á¤"À̶ó´Â ¸íĪÀ» °¡Áö´Â À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ±âµ¿ÇÏ´Â ¿¹¸¦ µéÀÔ´Ï´Ù.

//WSEV_KEY_HOOK Æ®¸®°Å(trigger)·Î WSCvifield  ÀνºÅϽº¿¡ ¼³Á¤ÇÕ´Ï´Ù.
#include <WSDkeyboard.h>
void cbop(WSCbase* object){
  //(A) ÀԷµǿ©ÀÖ´Â Å°¸¦ Ãëµæ.
  long key = WSGIappKeyboard()->getKey();
  //(B) Å°°¡ EnterÅ°À̸ç´Â
  if (key == WSK_Return){
    //"ÀÔ·ÂÈ®Á¤"À̶õ ¸íĪÀ» °¡Áö´Â À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ½ÇÇà.
    object->execProcedure("ÀÔ·ÂÈ®Á¤");
  }
}

(A)¿¡¼­ ÀÚÆÇ Àü¿ª ÀνºÅϽº¿¡¼­ Áö±Ý ÀԷµǿ©ÀÖ´Â Å°¸¦ ÃëµæÇÕ´Ï´Ù.

(B)¿¡¼­ EnterÅ°ÀÎÁö¸¦ ÆǺ°Çؼ­,±×·§´õ¶ó¸é (C)¿¡¼­ "ÀÔ·ÂÈ®Á¤"À̶õ EP¸íĪÀ» °¡Áö´Â EP¸¦ ½ÇÇà½Ãŵ´Ï´Ù. ±× ÀÔ·ÂÈ®Á¤ ½ÇÇà À̺¥Æ® ÇÁ·Î½ÃÀú´Â EnterÅ°¿¡À§ÇÑ ÀÔ·ÂÈ®Á¤ µ¿ÀÛÀ» ÇÒ °æ¿ì¿¡ ÀÚÁÖ ÀÌ¿ëµË´Ï´Ù.

Ãʱ⶧ ÀÔ·ÂÀ¸·Î Àü¿¡ ÀԷ¹®ÀÚ¿­À» Ä¡¿ì±â¿¡´Â

»õ·Î ÃÊÁ¡ÀÌ ¸Â¾Æ¼­ ÀÔ·ÂÀ» ½ÃÀÛÇÒ °æ¿ì³ª »õ·Î ¸¶¿ì½º·Î Ŭ¸¯µÇ¿©¼­ ÀÔ·ÂÀ» ½ÃÀÛÇÏ´Â °æ¿ì¿¡ Àü¿¡ ÀÔ·ÂÇÑ ¹®ÀÚ¿­À» Ä¡¿ì´Â À̺¥Æ®ÇÁ·Î½ÃÀú¸¦ ÀÛ¼ºÇغ¾½Ã´Ù. ÁÖ·ÎÀÇ È帧Àº ´ÙÀ½°ú °°½À´Ï´Ù.

#include <WSDkeyboard.h>

// ÃÊÁ¡ÀÌ ¸Â¾ÆÀÖÀ¸¸é ÀÔ·Â Çʵ带 º¸ÁöÇÒ º¯¼ö
static WSCbase* _focus_if = NULL;

//WSEV_FOCUS_CH  Æ®¸®°Å(trigger)·Î ±âµ¿µÉ ¼­ºêEP
static void _focus_ch_(WSCbase* object){
  //(A)ÃÊÁ¡ÀÌ À̵¿µÇ¿©¼­ ¿Ô´Â°¡¸¦ Á¶»ç
  if (_focus_if != object && object->getFocus() != False){ 
    //(B)´Ù¸¥ °´Ã¼¿¡¼­ ÃÊÁ¡ÀÌ À̵¿ÇØ¿Â °æ¿ì,
    //Ä¡¿ï ŸÀ̹ÖÀ» ÇÁ·¡±×(flag)¿¡ ¿Ü¾î³õ´Ù
    object->setUserData("CLEAR TIMING",(void*)1);
    //(C)»õ·Î ÃÊÁ¡ÀÌ ¸ÂÀº°ÍÀÌ ÀÚ½Å.
    _focus_if = object;
  }
}

//WSEV_MOUSE_PRESS  Æ®¸®°Å(trigger)·Î ±âµ¿µÇ´Â ¼­ºêEP
static void _btn_press_(WSCbase* object){
  //(D)¸¶¿ì½º·Î Ŭ¸¯µÇ¸ç´Â
  //Ä¡¿ï ŸÀ̹ÖÀ» ÇÁ·¡±×(flag)¿¡ ¿Ü¾î³õ´Ù
  object->setUserData("CLEAR TIMING",(void*)1);
  object->setProperty(WSNcursorPos,0);
  //(E)»õ·Î ÃÊÁ¡ÀÌ ¸ÂÀº°ÍÀÌ ÀÚ½Å.
  _focus_if = object;
}

//WSEV_KEY_PRESS  Æ®¸®°Å(trigger)·Î ±âµ¿µÇ´Â ¼­ºêEP
static void _key_hook_(WSCbase* object){
  //(F)  Å° ÀÔ·ÂÇÒ¶§¿¡ Ä¡¿ï ŸÀ̹ÖÀΰ¡¸¦ Á¶»ç
  long fl =(long)object->getUserData("CLEAR TIMING");
  if (fl == 1){
    long key = WSGIappKeyboard()->getKey();
    //(G)Ä¡¿ï ŸÀַ̹ΠÀ̵¿ Å°¾Æ´Ï¸ç´Â
    if (key != WSK_Tab &&
        key != WSK_Up &&
        key != WSK_Down &&
        key != WSK_Left &&
        key != WSK_Right ){
      //(H)«¯«ê«¢.
      object->setProperty(WSNlabelString,"");
    }else{
      return;
    }
  }
  //(I)Ä¡¿ï ŸÀÌ¹Ö ÇÁ·¡±×(flag)¸¦ Ä¡¿î´Ù.
  object->setUserData("CLEAR TIMING",(void*)0);
}

//Àü¿¡ ÀÔ·ÂµÈ ¹®ÀÚ¿­À» Ä¡¿ï º»Ã¼
//WSEV_INITIALIZE  Æ®¸®°Å(trigger)·Î ÀÔ·Â Çʵ忡 ¼³Á¤ÇÕ´Ï´Ù.
void ifdclr(WSCbase* object){
  // ÃÊÁ¡ÀÌ ¸ÂÀº °æ¿ì¿¡ ±âµ¿µÇ´Â ¼­ºêEP¸¦ ¼³Á¤
  WSCprocedure* ac1 = new WSCprocedure("ac1",WSEV_FOCUS_CH);
  ac1->setFunction(_focus_ch_,"_focus_ch_");
  object->addProcedure(ac1);

  // ¸¶¿ì½º°¡ Ŭ¸¯µÇ¿´À»¶§ ±âµ¿µÇ´Â ¼­ºêEP¸¦ ¼³Á¤
  WSCprocedure* ac2 = new WSCprocedure("ac2",WSEV_MOUSE_PRESS);
  ac2->setFunction(_btn_press_,"_btn_press_");
  object->addProcedure(ac2);

  // Å° ÀԷµǿ´À»¶§ ±âµ¿µÇ´Â ¼­ºêEP¸¦ ¼³Á¤
  WSCprocedure* ac3 = new WSCprocedure("ac3",WSEV_KEY_HOOK);
  ac3->setFunction(_key_hook_,"_key_hook_");
  object->addProcedure(ac3);
}

¸ÕÀú ÃÊÁ¡°ü·ÃÀÇ ¼­ºêEP¿¡°üÇÏ¿© ¼³¸íÇÕ´Ï´Ù. ÃÊÁ¡ÀÌ »õ·Î ¸ÂÀº°ÍÀ» ¾Ë±âÀ§ÇØ Àü¿¡ ÃÊÁ¡ÀÌ ¸Â¾Ò´ø °´Ã¼¸¦ Á¤Àû(static)º¯¼ö¿¡ º¸ÁöÇسõ°Ú½À´Ï´Ù.

(A)¿¡¼­´Â ¿ì¼± º¸ÁöÇسõÀº °´Ã¼¿Í ÀÚ½ÅÀÌ ´Ù¸¥ °´Ã¼Àΰ¡¸¦ Á¶»çÇÕ´Ï´Ù. ´Ù¸£¸é »õ·Î ÃÊÁ¡ÀÌ ¸ÂÀº°ÍÀ» ÀǹÌÇؼ­, (B)¿¡¼­ Ä¡¿ï ÇÁ·¡±×(flag)¸¦ ¼¼¿ö³õ½À´Ï´Ù. ±× ´ÙÀ½¿¡ (C)¿¡¼­ ÀÚ½ÅÀ» ±× Á¤Àû(static) º¯¼ö¿¡ º¸ÁöÇÕ´Ï´Ù.

´ÙÀ½¿¡´Â ¸¶¿ì½ºÀÇ Å¬¸¯°ü·Ã¿¡ ¼­ºêEP¿¡°ü¿¡¼­ ¼³¸íÇÕ´Ï´Ù. (D)¿¡¼­ Ä¡¿ï ÇÁ·¡±×¸¦ ¼¼¿ö¼­ ÀÔ·Â Ä«¼³À» ¼±µÎ·Î ¼³Á¤ÇÕ´Ï´Ù. ±×ÈÄ¿¡ (E)¿¡¼­ ÀÚ½ÅÀ» ÃÊÁ¡º¸ÁöÀÇ Á¤Àû(static) º¯¼ö¿¡ º¸ÁöÇÕ´Ï´Ù.

´ÙÀ½¿¡´Â Å° ÀԷ°ü·ÃÀÇ ¼­ºêEP¿¡ ´ëÇؼ­ ¼³¸íÇÕ´Ï´Ù. Å° ÀԷ°ü·ÃÀÇ ¼­ºêEP¿¡¼­´Â Ä¡¿ï ÇÁ·¡±×(flag)¸¦ ¼¼¿ï °æ¿ì, ¹®ÀÚ¿­¸¦ Ä¡¿ö¼­ ±× Ä¡¿ï ÇÁ·¡±×(flag)¸¦ Ä¡¿ó´Ï´Ù. ¿ì¼± (F)¿¡¼­ Ä¡¿ï ÇÁ·¡±×(flag)°¡ ¼¼¿öÀúÀִ°¡¸¦ Á¶»çÇÕ´Ï´Ù. (G)¿¡¼­´Â À̵¿ Å°¸¦ ÀÔ·ÂÇÑ°ÍÀ¸·Î Ä¡¿öÁöÁö¾Êµµ·Ï ±× Å°¸¦ ÆǺ°Çؼ­, (H)·Î Ä¡¿ö¼­ (I)·Î Ä¡¿ï ÇÁ·¡±×(flag)¸¦ Ä¡¿ó´Ï´Ù.

Document Release 3.90 for WideStudio/MWT ver 3.90, Jul 2005


WideStudio/MWT documents index | Table of contents

Copyright(C) WideStudio/MWT Development Team, 1999-2005 Last modified: Jul 31, 2005