³ª. <Shift> Ŭ¸¯

<Shift> Ŭ¸¯Àº ¸Ö¸® ¶³¾îÁ® ÀÖ´Â µÎ ÁöÁ¡À» ¼±ÅÃÇÏ°íÀÚ ÇÒ ¶§ »ç¿ëÇÏ´Â ¸í·ÉÀÌ´Ù. ¼±ÅÃÀ» ÇÏ°íÀÚ ÇÏ´Â ½ÃÀÛ ÁöÁ¡¿¡ ij·µÀ» µÎ°í ¼±Åà ³¡ Á¡À¸·Î ½ºÅ©·ÑÇÑ ÈÄ <Shift> Ŭ¸¯Çϸé ij·µ À§Ä¡¿¡¼­ Ŭ¸¯ÇÑ °÷±îÁö ¼±ÅõȴÙ. ¼±Åÿµ¿ªÀÌ ±æ¾î ÇÑ È­¸é¿¡ º¸ÀÌÁö ¾ÊÀ¸¸é ¸¶¿ì½º¸¦ µå·¡±×Çؼ­ ¼±ÅÃÇϱⰡ ¾î·Æ°í Å°º¸µå·Îµµ ¼±ÅÃÇÒ ¼ö ¾øÀ¸¹Ç·Î ÀÌ ¾×¼ÇÀº ¹Ýµå½Ã Áö¿øÇØ¾ß ÇÑ´Ù.

¿¹¸¦ µé¾î 12ÂÊ¿¡¼­ 88ÂʱîÁöÀÇ ³»¿ëÀ» º¹»çÇÏ°í ½Í´Ù°í Çغ¸ÀÚ. 12ÂÊ¿¡¼­ Ŭ¸¯ÇÑ ÈÄ Âß ½ºÅ©·ÑÇؼ­ 88ÂʱîÁö ³»·Á°¡¾ß Çϴµ¥ ÂßÀÌ ¾Æ´Ï¶ó ¾Æ¸¶ ÂÞ¿ì¿ì¿ì¿í ÇÑÂü ³»·Á°¡¾ß ÇÒ °ÍÀÌ´Ù. ºÎÁö·±È÷ ³»·Á°¡°í ÀÖ´Â Áß¿¡ ¸¶¿ì½º¸¦ ³õÄ¡±â¶óµµ Çϸé Á¤¸» Â¥Áõ³­´Ù. Å°º¸µå·Î <Shift+PgDn>À» °è¼Ó ´­·¯µµ µÇÁö¸¸ ¿ª½Ã ºÒÆíÇϱâ´Â ¸¶Âù°¡Áö´Ù. <Shift> Ŭ¸¯Àº ÀÏ´Ü ½ÃÀÛ ÁöÁ¡¿¡ ij·µÀ» µÎ°í ½ºÅ©·Ñ¹Ù¸¦ »ç¿ëÇÏ¿© ºü¸£°Ô À̵¿ÇÑ ÈÄ ³¡ Á¡À» ÁöÁ¤ÇÒ ¼ö Àֱ⠶§¹®¿¡ ±ä ¹®¼­¸¦ ¼±ÅÃÇÒ ¶§ ¾ÆÁÖ À¯¿ëÇÏ´Ù.

µ¿ÀÛÀÇ Á¤ÀÇ°¡ °£´ÜÇϱ⠶§¹®¿¡ Äڵ嵵 °£´ÜÇÏ´Ù. ij·µÀÌ ÀÖ´Â ÁöÁ¡À» SelStart¿¡ ´ëÀÔÇÏ°í Ŭ¸¯ÇÑ ÁöÁ¡À» SelEnd¿¡ ´ëÀÔÇÑ ÈÄ È­¸éÀ» ´Ù½Ã ±×·ÁÁֱ⸸ ÇÏ¸é µÈ´Ù. ¸ðµç ÀÏÀº ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯ÇÒ ¶§ ÀϾ¹Ç·Î OnLButtonDown ÇÔ¼ö¿¡¸¸ Äڵ带 ÀÛ¼ºÇÑ´Ù.

 

void OnLButtonDown(HWND hWnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)

{

     int toff;

    BOOL bShift, bControl;

 

    bShift=((GetKeyState(VK_SHIFT) & 0x8000) != 0);

    bControl=((GetKeyState(VK_CONTROL) & 0x8000) != 0);

 

     if (fDoubleClick) {

          ....

     }

 

    if (bShift) {

        toff=GetOffFromXY(x+xPos,y+yPos);

        ExpandSelection(off,toff);

        off=toff;

    } else {

          ClearSelection();

          off=GetOffFromXY(x+xPos,y+yPos);

          SelStart=SelEnd=off;

    }

 

     SetCapture(hWnd);

     bCapture=TRUE;

     SetCaret();

}

 

<Shift>Å°¿Í <Ctrl>Å°ÀÇ »óŸ¦ »ç¿ëÇÒ °ÍÀ̹ǷΠOnKey ÇÔ¼ö¿¡¼­¿Í ¸¶Âù°¡Áö·Î bShift, bControl º¯¼ö¿¡ Å°º¸µå »óŸ¦ ¹Ì¸® Á¶»çÇصξú´Ù. keyFlags Àμö·Îµµ Å°º¸µå »óÅ°¡ Àü´ÞµÇ±â´Â ÇÏÁö¸¸ ÀÏ°ü¼ºÀ» À§ÇØ GetKeyState ÇÔ¼ö·Î µû·Î Á¶»çÇÏ¿´´Ù. Ŭ¸¯ÇÑ À§Ä¡ÀÇ ¿ÀÇÁ¼ÂÀ» toff¿¡ Á¶»çÇÑ ÈÄ off¸¦ ½ÃÀÛÁ¡À¸·Î toff¸¦ ³¡Á¡À¸·Î ÇÏ¿© ExpandSelection ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÈ´Ù. ÀÌ ÇÔ¼ö´Â ¼±Åÿµ¿ªÀÌ ¾øÀ¸¸é off~toff±îÁö »õ·Î ¼±Åÿµ¿ªÀ» ¸¸µé¾î ÁÖ°í ±âÁ¸ÀÇ ¼±Åÿµ¿ªÀÌ ÀÖÀ¸¸ç SelStart´Â ±×´ë·Î µÎ°í SelEnd¸¸ toff±îÁö È®ÀåÇϹǷΠ<Shift> Ŭ¸¯ÀÇ µ¿ÀÛ°ú ¾ÆÁÖ Àß ¾î¿ï¸°´Ù.

À̶§ ÁÖÀÇÇÒ °ÍÀº <Shift> Ŭ¸¯Àº ´õºíŬ¸¯°ú´Â ´Þ¸® ÀÌ Ã³¸®¸¸À¸·Î ³¡³ª´Â °ÍÀÌ ¾Æ´Ï¶ó °è¼Ó µå·¡±×¸¦ ÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. <Shift> Ŭ¸¯À¸·Î ÀÏ´Ü ¹üÀ§¸¦ ¼±ÅÃÇÑ ÈÄ °è¼Ó µå·¡±× ÇÏ¸é ¼±Åÿµ¿ªÀº ¸¶¿ì½º¸¦ µû¶ó È®ÀåµÇ¾î¾ß ÇÑ´Ù. ±×·¡¼­ bShift ó¸® ÈÄ °ð¹Ù·Î ¸®ÅÏÇÏÁö ¾Ê°í Ä¿¼­¸¦ ĸóÇÏ¿© OnMouseMove¿¡¼­ ¼±Åÿµ¿ªÀ» °è¼Ó È®ÀåÇÒ ¼ö ÀÖµµ·Ï ÇÏ¿´´Ù.