°¡. ´ë¼Ò¹®ÀÚ º¯È¯

´ç±ÙÀº ÅؽºÆ® ÆíÁý±â°í Áö±Ý±îÁö ±âº»ÀûÀÎ ÆíÁý±â´ÉµéÀ» ¸¸µé¾î ¿Ô´Ù. ¹®ÀÚ¿­À» »ðÀÔÇϰųª »èÁ¦ÇÏ°í Ŭ¸³º¸µå¸¦ ÅëÇØ ¼±Åÿµ¿ªÀ» º¹»çÇϰųª ºÙ¿©³Ö´Â µîÀÇ ±â´ÉÀº ÅؽºÆ® ÆíÁý±â¶ó¸é ´ç¿¬È÷ °®Ãß¾î¾ß ÇÒ Çʼö ±â´ÉµéÀÌ´Ù. ÀÌ Àå¿¡¼­ ¸¸µé ÆíÁý±â´ÉÀº ±âº» ±â´ÉÀ̶ó±â º¸´Ù´Â ´Ù¼Ò °í±Þ ±â´É¿¡ ¼ÓÇÑ´Ù. Àß ¾²Áöµµ ¾ÊÀ¸¸ç ÇʼöÀûÀÎ ±â´Éµµ ¾Æ´ÏÁö¸¸ ÀÖÀ¸¸é ¾ðÁ¨°¡´Â µµ¿òÀÌ µÇ´Â ±×·± ±â´ÉµéÀÌ´Ù. ´Ù¸¥ ÆíÁý±âµéµµ ÀÌ Àå¿¡¼­ ÀÛ¼ºÇÒ °í±Þ ÆíÁý±â´ÉÀ» ´Ù Á¦°øÇÏ°í Àֱ⠶§¹®¿¡ ÀÌÁ¦´Â ´õ ÀÌ»ó °í±Þ ±â´É Ãà¿¡ ¼ÓÇÑ´Ù°í º¸±â ¾î·Á¿öÁ³°í ¿ÀÈ÷·Á ¾øÀ¸¸é ¼·¼·ÇÑ °æ¿ì°¡ ¸¹´Ù.

±×·¡¼­ ´ç±Ùµµ ½Ã´ëÀÇ È帧¿¡ ºÎÀÀÇϱâ À§ÇØ, ¼ÖÁ÷È÷ ¸»ÇÏÀÚ¸é ´Ù¸¥ ÆíÁý±â¿¡°Ô ¹Ð¸®Áö ¾Ê±â À§ÇØ ÀÌ·± °í±Þ ÆíÁý±â´ÉÀ» ÀÛ¼ºÇغ¸±â·Î Çß´Ù. °í±Þ ÆíÁý±â´ÉÀ̶ó°í Çؼ­ ºÒ°¡´ÉÇÑ °ÍÀ» °¡´ÉÇÏ°Ô ÇÏ´Â ¸¶¼ú °°Àº °ÍÀº ¾Æ´Ï¸ç »ç¿ëÀÚµéÀÌ ¿©·¯ ¹ø ÀÛ¾÷ÇØ¾ß ÇÒ µ¿ÀÛÀ» ÇÑ ¹ø¿¡ ÀÚµ¿À¸·Î ÇÏ´Â ÆíÀÇ ±â´É Á¤µµ·Î »ý°¢ÇÏ¸é µÈ´Ù. ¼±ÅÃÇÑ ¹üÀ§ÀÇ ÅؽºÆ®¸¦ ¹Ì¸® Á¤ÇØÁø ÀÛ¾÷ ±ÔÄ¢´ë·Î Á¶ÀÛÇÑ ÈÄ ´ëü½ÃÄÑ ÁÖ´Â ½ÄÀ¸·Î ±â´ÉÀ» ±¸ÇöÇϴµ¥ ³­À̵µ´Â Áß±Þ Á¤µµ µÇ¸ç ÅؽºÆ® Á¶ÀÛÀ» À§ÇØ Æ÷ÀÎÅ͸¦ ¸¹ÀÌ »ç¿ëÇÑ´Ù. ÀÌ ÀåÀÇ ½Ç½ÀÀ» ÅëÇØ Æ÷ÀÎÅÍ¿¡ ´ëÇØ ¸¹Àº °ÍÀ» °æÇèÇØ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

Ç×»ó ±×·¡¿ÔµíÀÌ »õ·Î¿î ±â´ÉÀ» ÀÛ¼ºÇϱâ Àü¿¡ ÀÌÀü ÇÁ·ÎÁ§Æ®¸¦ º¹»çÇÏ¿© Dangeun9 ÇÁ·ÎÁ§Æ®¸¦ ¸¸µéµµ·Ï ÇÏÀÚ. ÅؽºÆ® Æ÷¸ËÀº ´Ü¼øÇÑ ¹®ÀÚ¿­ÀÇ ³ª¿­ÀÌ´Ù. ÇÏÁö¸¸ ´Ü¼øÇÑ ¹®ÀÚµé Áß¿¡µµ Á» Ưº°ÇÏ°Ô Ãë±ÞµÇ´Â ºÎ·ù°¡ µÎ °¡Áö Àִµ¥ ¹Ù·Î °ø¹é°ú ÁÙ ³¡ ÄÚµåÀÌ´Ù. °ø¹éÀ¸·Î Ãë±ÞµÇ´Â ¹®ÀÚ¿¡´Â ½ºÆäÀ̽º¿Í ÅÇÀÌ ÀÖÀ¸¸ç ´Ü¾î À̵¿À̳ª ´Ü¾î ¼±Åà µîÀÇ ±âÁØÀ¸·Î »ç¿ëµÈ´Ù. ÁÙ ³¡ ÄÚµå´Â ¹°¸®ÀûÀÎ ÁÙÀÇ ³¡À» ³ªÅ¸³»´Âµ¥ ´ëÇ¥ÀûÀ¸·Î ¿£ÅÍÄڵ尡 ÀÖ°í ¹®¼­ÀÇ ³¡ Ç¥½ÄÀÎ ³Î Á¾·á¹®ÀÚ(0)µµ ÁÙ ³¡ ÄÚµåÀÌ´Ù. ³Î Á¾·á¹®ÀÚ´Â ¹®¼­ ³¡À» ³ªÅ¸³¿°ú µ¿½Ã¿¡ ¸¶Áö¸· ÁÙÀÇ ³¡À» ³ªÅ¸³½´Ù.

ÆíÁý ÄÚµåµéÀº ¹®ÀÚ¿­À» ´Ù·ê ¶§ °ø¹é°ú ÁÙ ³¡ Äڵ忡 ´ëÇؼ­´Â Ç×»ó Ưº°ÇÏ°Ô Ãë±ÞÇØ¾ß Çϸç ÄÚµåÀÇ °÷°÷¿¡¼­ °ø¹é°ú ÁÙ ³¡ ÄÚµå °Ë»ç¸¦ ÇÑ´Ù. ±×·¡¼­ À̰͵éÀ» °ËÃâÇس»´Â °£´ÜÇÑ ¸ÅÅ©·Î¸¦ Á¤ÀÇÇÔÀ¸·Î½á °í±Þ ÆíÁý±â´É ½Ç½ÀÀ» ½ÃÀÛÇϵµ·Ï ÇÏÀÚ. °ø¹é°ú ÁÙ ³¡ Äڵ忡 µÎ °³¾¿ÀÇ Äڵ尡 Àֱ⠶§¹®¿¡ Ç×»ó ³í¸®ÇÕÀ¸·Î µÎ Á¶°ÇÀ» ¿¬°áÇØ¾ß Çϴµ¥ ÀÌ °£´ÜÇÑ Á¶°ÇÀ» ¸ÅÅ©·Î·Î Á¤ÀÇÇصθé Äڵ尡 °£´ÜÇØÁö´Â È¿°ú°¡ ÀÖ´Ù. ¾ÕÀ¸·Î ÀÌ ¸ÅÅ©·Î¸¦ ÀÚÁÖ »ç¿ëÇÏ°Ô µÉ °ÍÀ̹ǷΠApiEdit.hÇì´õ ÆÄÀÏ¿¡ ´ÙÀ½ µÎ ¸ÅÅ©·Î¸¦ Á¤ÀÇÇÑ´Ù.

 

#define AeIsWhiteSpace(c) ((c)==¡® ¡® || (c) == ¡®\t¡¯)

#define AeIsLineEnd(c) ((c)==¡®\r¡¯ || (c) == 0)

 

¸ÅÅ©·Î ³»¿ëÀº ³Ê¹« ½¬¿ö¼­ Àо º¸¸é ÀÌÇØ°¡ µÉ Á¤µµ´Ù. ¸ÅÅ©·Î ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¶§´Â Àμö¸¦ °ýÈ£·Î ¹Ýµå½Ã ¹­¾î ¿¬»ê ¼øÀ§¿¡ ¿µÇâÀ» ¹ÞÁö ¾Êµµ·Ï ÇØ¾ß ÇÔÀ» À¯ÀÇÇÏÀÚ. ÀÌ µÎ ÇÔ¼ö´Â ÀÌ Àå Àü¹Ý¿¡ °ÉÃÄ Á¾Á¾ »ç¿ëµÉ °ÍÀÌ´Ù. ÀÌ ÂªÀº ¸ÅÅ©·Î ´öºÐ¿¡ Äڵ尡 ¾ó¸¶³ª Àб⠽¬¿öÁö´ÂÁö Äڵ带 ¸¸µé¸é¼­ Á÷Á¢ È®ÀÎÇغ¸°Ô µÉ °ÍÀÌ´Ù.

°í±Þ ÆíÁý±â´ÉÀÇ Ã¹ ¹ø° ½Ç½ÀÀº ´ë¼Ò¹®ÀÚ¸¦ º¯È¯ÇÏ´Â °ÍÀÌ´Ù. Çѱۿ¡´Â ´ë¼Ò¹®ÀÚ°¡ ¾øÁö¸¸ ¿µ¹®¿¡´Â °°Àº ¹®ÀÚ¿¡ ´ëÇØ ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ°¡ °¢°¢ Çϳª¾¿ Àֱ⠶§¹®¿¡ µÎ ¹®ÀÚ »çÀ̸¦ ÀÚµ¿À¸·Î º¯È¯ÇÏ´Â ±â´ÉÀÌ ÇÊ¿äÇÏ´Ù. ÆíÁý ¸Þ´º¿¡ ´ë¼Ò¹®ÀÚ¸¦ º¯È¯ÇÏ´Â ¸í·É ´Ù¼¸ °¡Áö°¡ ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Ù.

ÀÌ·± °£´ÜÇÑ ±â´ÉÀ» ´Ù¼¸ °³ÀÇ ¸í·ÉÀ¸·Î ³ª´­ ¼ö ÀÖ´Ù´Â °Í ÀÚü°¡ Âü ³î¶ó¿î ÀÏÀÌ´Ù. ÀÌ ¸í·ÉµéÀº ¸ðµÎ ºñ½Áºñ½ÁÇÏ°Ô Ã³¸®µÇ¹Ç·Î ÇÑ ÇÔ¼ö·Î ó¸®Çϵµ·Ï ÇÏÀÚ. CApiEdit¿¡ ´ÙÀ½ ¸â¹öÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.

 

void CApiEdit::ChangeCase(int action)

{

     int SelFirst, SelSecond;

     int len;

     TCHAR *tbuf;

     TCHAR *p;

     int toff;

 

     if (SelStart == SelEnd) {

          switch (action) {

          case 0:

          case 1:

          case 2:

              if (buf[off]==0) {

                   return;

              }

              SelFirst=SelSecond=off;

               if (IsDBCS(off)) {

                   len=2;

              } else {

                   len=1;

              }

              break;

          case 3:

              GetNowWord(off,SelFirst,SelSecond);

              len=SelSecond-SelFirst;

              break;

          case 4:

              return;

          }

     } else {

          SelFirst=min(SelStart,SelEnd);

          SelSecond=max(SelStart,SelEnd);

          len=SelSecond-SelFirst;

     }

 

     tbuf=(TCHAR *)malloc(len+1);

     lstrcpyn(tbuf,buf+SelFirst,len+1);

 

     switch (action) {

     case 0:

          CharUpper(tbuf);

          break;

     case 1:

          CharLower(tbuf);

          break;

     case 2:

          p=tbuf;

          while (*p) {

              if (IsCharUpper(*p)) {

                   *p+=0x20;

              } else if (IsCharLower(*p)) {

                   *p-=0x20;

              }

              p++;

          }

          break;

     case 3:

          p=tbuf;

          if (IsCharLower(*p)) {

              *p-=0x20;

          }

          p++;

          while (*p) {

              if (IsDelimiter(SelFirst+(p-tbuf)-1)) {

                   if (IsCharLower(*p)) {

                        *p-=0x20;

                   }

              } else {

                   if (IsCharUpper(*p)) {

                        *p+=0x20;

                   }

              }

              p++;

          }

          break;

     case 4:

          p=tbuf;

 

          toff=SelFirst;

          while (AeIsWhiteSpace(buf[toff]) && toff > 0)

              toff--;

          if (toff==0 || buf[toff]==¡®\n¡¯ || buf[toff]==¡®.¡¯) {

              if (IsCharLower(*p)) {

                   *p-=0x20;

              }

          } else {

              if (IsCharUpper(*p)) {

                   *p+=0x20;

              }

          }

          p++;

 

          while (*p) {

              if (*p==¡®.¡¯ || *p==¡®\n¡¯) {

                   p++;

                   while (AeIsWhiteSpace(*p) && *p)

                        p++;

                   if (*p==0)

                        break;

                   if (IsCharLower(*p)) {

                        *p-=0x20;

                   }

              } else {

                   if (IsCharUpper(*p)) {

                        *p+=0x20;

                   }

              }

              p++;

          }

          break;

     }

 

     StartUndoGroup();

     Delete(SelFirst,len);

     Insert(SelFirst,tbuf);

     EndUndoGroup();

 

     if (SelStart==SelEnd && action < 3) {

          off=GetNextOff(off);

     }

     free(tbuf);

     Invalidate(SelFirst);

     SetCaret();

}

 

action Àμö¿¡ µû¶ó º¯È¯ ¹æ¹ýÀÌ ´Þ¶óÁö´Âµ¥ À§ÂÊ ¸Þ´ºÇ׸ñºÎÅÍ Â÷·Ê´ë·Î ¾×¼Ç 0~5±îÁöÀÇ °ªÀ» °¡Áø´Ù. ´ë¼Ò¹®ÀÚ¸¦ º¯È¯ÇÏ´Â °úÁ¤Àº ÄÚ³¢¸®¸¦ ³ÃÀå°í¿¡ ³Ö´Â ¹æ¹ý°ú À¯»çÇÏ´Ù. ¨ç º¯È¯ ´ë»óÀ» °í¸¥´Ù. ¨è º¯È¯ÇÑ´Ù. ¨é °á°ú¸¦ ½á ³Ö´Â´Ù. ´ë¼Ò¹®ÀÚ º¯È¯»Ó¸¸ ¾Æ´Ï¶ó À̾îÁö´Â ¸ðµç º¯È¯ ÀÛ¾÷ÀÇ Å« ƲÀº ÀÌ ¼¼ ´Ü°è¸¦ Å©°Ô ¹þ¾î³ªÁö ¾Ê´Â´Ù. action¿¡ µû¶ó ´Þ¶óÁö´Â °ÍÀº ¨è ¹ø °úÁ¤»ÓÀÌ¸ç ¨ç ¹ø, ¨é ¹øÀº action°ú »ó°ü¾øÀÌ µ¿ÀÏÇÏ´Ù.

±×·¡¼­ ´Ù¼¸ °³ÀÇ º¯È¯ ¸í·ÉÀ» ÇÑ ÇÔ¼ö°¡ ó¸®ÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ChangeCase ÇÔ¼ö´Â º¯È¯ ´ë»óÀ» ¸ÕÀú ¼±ÅÃÇÏ°í action¿¡ µû¶ó ¼±ÅÃµÈ ¹®ÀÚ¿­À» º¯È¯ÇÏ¸ç ±× °á°ú¸¦ ´Ù½Ã ¿ø·¡ À§Ä¡¿¡ ½á ³Ö´Â ½ÄÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù. °¢ ´Ü°è°¡ ¾î¶»°Ô 󸮵ǴÂÁö º¸ÀÚ.

º¯È¯ ´ë»ó °í¸£±â

¼±Åÿµ¿ªÀÌ ÀÖÀ¸¸é »ç¿ëÀÚ°¡ º¯È¯ ´ë»óÀ» ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÑ °ÍÀ̹ǷΠ´õ °í¸¦ °Íµµ ¾øÀÌ ÁÖ¾îÁø ¼±Åÿµ¿ªÀ» ÃëÇÏ¸é µÈ´Ù. ¼±Åÿµ¿ªÀÌ ¾øÀ» °æ¿ì´Â µðÆúÆ® ´ë»óÀ» ÃëÇ쵂 ¾×¼Ç¿¡ µû¶ó µðÆúÆ®°¡ ´Þ¶óÁø´Ù. 0,1,2 actionÀº ÇÑ ¹®ÀÚ¸¦ ´ë»óÀ¸·Î ÇϹǷΠÇöÀç ij·µ À§Ä¡ÀÇ ±ÛÀÚ Çϳª¸¦ ÃëÇÑ´Ù. action 3Àº ´Ü¾î¸¦ ´ë»óÀ¸·Î ÇϹǷΠGetNowWord ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ÇöÀç ij·µ À§Ä¡ÀÇ ´Ü¾î¸¦ ÃëÇÑ´Ù. 4¹ø actionÀº ¹®ÀåÀ» ´ë»óÀ¸·Î ÇϹǷΠ¼±Åÿµ¿ªÀÌ ¾øÀ¸¸é »ç¿ëÇÒ ¼ö ¾øÀ¸¸ç ±×³É ¸®ÅÏÇØ ¹ö¸°´Ù.

´ë»óÀÌ ¼±Á¤µÇ¸é ±× ±æÀ̸¸Å­ tbuf¿¡ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í »çº»À» ¸¸µç´Ù. À̶§ º¯È¯ ´ë»ó ¹®ÀÚ¿­ÀÇ ±æÀÌ¿¡ ³Î Á¾·á¹®ÀÚÀÇ ±æÀ̸¦ ´õÇÑ ¸¸Å­À» ÇÒ´çÇØ¾ß ÇÑ´Ù. ÀÌ·¸°Ô ÇÒ´çµÈ tbuf°¡ ¹Ù·Î º¯È¯ ´ë»óÀÌ´Ù. ´ë¼Ò¹®ÀÚ º¯È¯ÀÇ °æ¿ì º¯È¯ ÈÄÀÇ ±æÀÌ°¡ ¹Ù²îÁö ¾Ê±â ¶§¹®¿¡ buf¸¦ Á÷Á¢ º¯°æÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ÇÏÁö¸¸ ±»ÀÌ »çº»À» ¸¸µå´Â ÀÌÀ¯´Â º¯È¯ ÀüÀÇ ¹®ÀÚ¿­°ú º¯È¯ ÈÄÀÇ ¹®ÀÚ¿­¿¡ ´ëÇØ ÆíÁý±â·ÏÀ» ³²°Ü¾ß¸¸ ½ÇÇàÃë¼Ò°¡ °¡´ÉÇØÁö±â ¶§¹®ÀÌ´Ù.

ApiEdit´Â ¾î¶² µ¿ÀÛÀ̵çÁö ¹®¼­¸¦ º¯°æÇÏ´Â ÀÛ¾÷Àº ¹Ýµå½Ã Insert¿Í Delete¸¦ ÅëÇϵµ·Ï µÇ¾î ÀÖ´Ù. ±×·¡¼­ bufÀÇ ´ë»óÀ» ¸ÕÀú DeleteÇÑ ÈÄ tbuf¸¦ ±× À§Ä¡¿¡ ´Ù½Ã InsertÇÔÀ¸·Î½á º¯È¯À» ¿Ï·áÇÒ ¼ö ÀÖ´Ù. ¼³»ç ÀÌ·± ±¸Á¶°¡ Á» ºñÈ¿À²ÀûÀÌ°í ¾ïÁö½º·´´õ¶óµµ ±×·¸°Ô ÇßÀ» ¶§ÀÇ ÀÌÁ¡¿¡ ´ëÇؼ­´Â ¾Õ¿¡¼­ ¸¹ÀÌ °æÇèÇØ º» ¹Ù°¡ ÀÖÀ¸¹Ç·Î ÀÌÁ¦ ÀÌ·± Á¤Ã¥ÀÌ ¾ÆÁÖ ÀÚ¿¬½º·´°Ô ´À²¸Áú °ÍÀÌ´Ù. ÀÌ·± ±â´ÉÀº ¾ÖÃÊ¿¡ ¼³°èÇÒ ¶§ºÎÅÍ Insert, Delete ±æ¸ñÀ» ÇÇÇØ°¥ »ý°¢À» ÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.

tbuf¿¡ º¯È¯ÇÒ ´ë»óÀÇ »çº»ÀÌ ÁغñµÇ¸é º¯È¯ÇÑ´Ù. ´ÙÇàÈ÷ ´ë¼Ò¹®ÀÚ º¯È¯Àº º¯È¯ Àü°ú ÈÄÀÇ ±æÀÌ°¡ µ¿ÀÏÇϹǷΠ¼±Åÿµ¿ªÀ̳ª ¿ÀÇÁ¼ÂÀÇ º¯È­ µûÀ§´Â ½Å°æ¾²Áö ¾Ê¾Æµµ µÈ´Ù. switch¹®À¸·Î actionº°·Î ºÐ±âÇÏ¿© tbufÀÇ ¹®ÀÚ¿­À» Á¶ÀÛÇÑ´Ù.

´ë¼Ò¹®ÀÚ º¯È¯-¾×¼Ç 0, 1

ÀÌ°Ç ¿ÏÀüÈ÷ ¾É¾Æ¼­ ¶± ¸Ô±â´Ù. ¹®ÀÚ¿­À» º¯È¯ÇÏ´Â µÎ °³ÀÇ API ÇÔ¼ö°¡ Á¦°øµÇ¹Ç·Î ºÒ·¯ Áֱ⸸ ÇÏ¸é µÈ´Ù. ´ë¹®ÀÚ·Î ¹Ù²Ü ¶§´Â CharUpper ÇÔ¼ö¸¦ È£ÃâÇÏ°í ¼Ò¹®ÀÚ·Î ¹Ù²Ü ¶§´Â CharLower ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ µÎ ÇÔ¼ö´Â ¿µ¹®ÀÚ°¡ ¾Æ´Ñ ¹®ÀÚ´Â ±×´ë·Î À¯ÁöÇϴ Ư¼ºÀÌ ÀÖÀ¸¹Ç·Î ÇѱÛÀ̳ª ¼ýÀÚ, ±âÈ£ µîÀÇ ¹®ÀÚ´Â º¯È¯µÇÁö ¾ÊÀ¸¸ç ¿ø·¡°ªÀ» À¯ÁöÇÑ´Ù.

´ë¼Ò¹®ÀÚ ¹Ý´ë·Î-¾×¼Ç 2

À̰͵µ »ý°¢º¸´Ù ½¬¿ö¼­ ¼­¼­ ¶± ¸Ô±â Á¤µµ´Â µÈ´Ù. p¿¡ tbufÀÇ ½ÃÀÛ ¹øÁö¸¦ ´ëÀÔÇÏ°í ¹öÆÛÀÇ ³¡±îÁö µ¹¸é¼­ ´ë¹®ÀÚ´Â ¼Ò¹®ÀÚ·Î, ¼Ò¹®ÀÚ´Â ´ë¹®ÀÚ·Î ¹Ù²ãÁÖ¸é µÈ´Ù. ÀÓÀÇÀÇ ¹®ÀÚ°¡ ´ë¹®ÀÚÀÎÁö, ¼Ò¹®ÀÚÀÎÁö´Â IsCharUpper, IsCharLower ÇÔ¼ö·Î Á¶»çÇÒ ¼ö ÀÖ´Ù. ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚÀÇ Äڵ尪 Â÷ÀÌ´Â 0x20(32)À̹ǷΠÀ̸¸Å­ ´õÇϰųª »©ÁÖ¸é ´ë¼Ò¹®ÀÚ¸¦ ¹Ý´ë·Î ¸¸µé ¼ö ÀÖ´Ù. CharUpper, CharLower API ÇÔ¼ö´Â ³Î Á¾·á¹®ÀÚ¿­À» Àμö·Î ¿ä±¸ÇϹǷΠÇÑ ¹®ÀÚ¸¦ º¯È¯ÇÒ ¶§´Â ¾µ ¼ö ¾ø´Ù.

ù ±ÛÀÚ¸¸ ´ë¹®ÀÚ·Î-¾×¼Ç 3

ÀÌ ¸í·ÉÀÇ Á¤È®ÇÑ Àǹ̴ °¢ ´Ü¾îÀÇ ½ÃÀÛ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î made in korea¿¡ ´ëÇØ ÀÌ ¸í·ÉÀ» ³»¸®¸é Made In Korea·Î ¹Ù²ãÁÖ¸é µÈ´Ù. ¹öÆÛÀÇ Ã³À½ºÎÅÍ ³¡±îÁö ·çÇÁ¸¦ µ¹¸é¼­ ±¸ºÐÀÚ ´ÙÀ½ÀÇ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù°í ³ª¸ÓÁö ¹®ÀÚ´Â ¼Ò¹®ÀÚ·Î ¹Ù²ãÁÖ¸é µÈ´Ù. ±¸ºÐÀÚ´Â ÇöÀç ¼±ÅÃµÈ ¹®¹ý ºÐ¼®±â¿¡ µû¶ó ´Þ¶óÁö¹Ç·Î ¾î¶² ¹®ÀÚ°¡ ´Ü¾îÀÇ ¼±µÎ°¡ µÉ °ÍÀΰ¡´Â ¼±ÅÃµÈ ºÐ¼®±â¿¡ µû¶ó ´Þ¶óÁø´Ù.

C ¾ð¾î ºÐ¼®±â´Â °ýÈ£³ª ¼¼¹ÌÄÝ·ÐÀ» ºÐ¼®±â·Î ÀνÄÇϹǷΠfor(idx=0;idx<10;idx++)¸¦ º¯È¯Çϸé For(Idx=0;Idx<10;Idx++) ÀÌ·¸°Ô º¯È¯µÉ °ÍÀÌ´Ù. ¿¹¿ÜÀûÀ¸·Î ù ¹ø° ±ÛÀÚ´Â ´Ü¾îÀÇ ¼±µÎ°¡ ¾Æ´Ï´õ¶óµµ ¹«Á¶°Ç ´ë¹®ÀÚ·Î ¹Ù²Û´Ù. ¼±Åÿµ¿ªÀÌ ÀÖ´Â »óÅ¿¡¼­ ÀÌ ¸í·ÉÀ» ³»·È´Ù´Â °ÍÀº ¼±Åÿµ¿ªÀÇ Ã¹ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù¶ó´Â ¶æÀ¸·Î Çؼ®ÇÏ´Â °ÍÀÌ´Ù.

¹®Àå óÀ½¸¸ ´ë¹®ÀÚ·Î-¾×¼Ç 4

ÀÌ ¸í·ÉÀº ¹®ÀåÀ» ´ë»óÀ¸·Î ÇϹǷΠ¾à°£ ¾î·Á¿î Á¡ÀÌ ÀÖ´Ù. ¹®ÀåÀÇ Ã¹ ¹®ÀÚ¶õ ¸¶Ä§Ç¥ ´ÙÀ½ÀÇ ¹®ÀÚ ¶Ç´Â °³ÇàÄÚµå ´ÙÀ½ÀÇ ¹®ÀÚ¸¦ ÀǹÌÇ쵂 ´Ü, °ø¹éÀº ¹«½ÃÇÏ°í °è»êÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ¡®Hey. Miyoung¡¯ÀÇ MÀº ¸¶Ä§Ç¥ ´ÙÀ½¿¡ ³ª¿ÔÀ¸¹Ç·Î ¹®ÀåÀÇ Ã¹ ¹®ÀÚ·Î ÀνĵǴµ¥ ¸¶Ä§Ç¥¿Í M»çÀÌ¿¡ ÀÖ´Â °ø¹éÀº ¸¶¶¥È÷ ¹«½ÃÇØ¾ß ÇÑ´Ù. Áï ¡®Hey.Miyoung¡¯À̳ª ¡®Hey.   Miyoung¡¯ÀÌ ¸ðµÎ ¶È°°ÀÌ ºÐ¼®µÇ¾î¾ß ÇÑ´Ù. °ø¹éÀ» ¹«½ÃÇÏÁö ¾ÊÀ¸¸é ¸¶Ä§Ç¥ ¹Ù·Î ´ÙÀ½¿¡ ÀÖ´Â ¹®ÀÚ¸¸ ¹®ÀåÀÇ Ã³À½À¸·Î ÀÎ½ÄµÉ °ÍÀÌ´Ù.

¿©±â¼­ °ø¹éÀ̶ó ÇÔÀº ½ºÆäÀ̽º¸¸À» ¸»ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó Åǵµ Æ÷ÇԵȴÙ. ±×·¡¼­ °ø¹éÀ» °Ë»çÇÏ´Â Á¶°Ç¹®¿¡ AeIsWhiteSpace ¸ÅÅ©·Î ÇÔ¼ö¸¦ »ç¿ëÇß´Ù. ¿©±â±îÁö¸¸ ÄÚµå·Î ±¸ÇöÇÏÀÚ¸é ±×¸® ¾î·ÆÁö ¾ÊÀ» °ÍÀÌ´Ù. tbufÀÇ Ã³À½ºÎÅÍ ³¡±îÁö ·çÇÁ¸¦ µ¹¸é¼­ ¸¶Ä§Ç¥³ª °³ÇàÄڵ带 ¸¸³ª¸é °ø¹éÀ» °Ç³Ê ¶Ú ÈÄ ´ë¹®ÀÚ·Î ¹Ù²Ù°í ±× ¿ÜÀÇ °æ¿ì´Â ¸ðµÎ ¼Ò¹®ÀÚ·Î ¹Ù²ãÁÖ¸é µÈ´Ù.

ÀÌ ±â´ÉÀÌ °ñÄ¡ ¾ÆÇ ÀÌÀ¯´Â ¼±Åÿµ¿ªÀÇ Ã¹ ¹ø° ¹®ÀÚ¸¦ ó¸®ÇϱⰡ ¾î·Æ´Ù´Â Á¡ÀÌ´Ù. ¿¹¸¦ µé¾î ¡®hey go. i go¡¯¶ó´Â ¹®ÀåÀ» ¼±ÅÃÇÑ »óÅÂÀÏ ¶§ ù ¹ø° h¹®ÀÚ°¡ ¹®ÀåÀÇ Ã¹ ¹®ÀÚÀÎÁö ¾Æ´ÑÁö¸¦ ¾Ë·Á¸é ÀÌ ¹®ÀÚ ¾Õ¿¡ ¾î¶² ¹®ÀÚ°¡ ÀÖ´ÂÁö Á¶»çÇØ ºÁ¾ß ÇÑ´Ù. ¹°·Ð ¾Õ¿¡ ÀÖ´Â °ø¹éÀº ¹«½ÃÇØ¾ß ÇÑ´Ù. ¸¸¾à ¾Õ ¹®ÀÚ°¡ ¸¶Ä§Ç¥³ª °³ÇàÄÚµå¶ó¸é h´Â ´ë¹®ÀÚ°¡ µÇ¾î¾ß ÇÏ°í ´Ù¸¥ ¹®ÀÚ°¡ ¾Õ¿¡ ÀÖ´Ù¸é ¹®ÀåÀÇ Ã³À½ÀÌ ¾Æ´ÔÀ» ¾Ë ¼ö ÀÖ´Ù. ÇÏÁö¸¸ tbuf´Â ¼±Åÿµ¿ª¿¡ ´ëÇÑ »çº»À̱⠶§¹®¿¡ ±× ¾Õ¹®ÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ ÀüÇô °¡Áö°í ÀÖÁö ¾ÊÀ¸¸ç µû¶ó¼­ tbuf¸¸À¸·Î´Â ù ¹®ÀÚ¿¡ ´ëÇÑ Ã³¸®¸¦ °áÁ¤ÇÒ ¼ö ¾ø´Ù.

±×·¡¼­ °°Àº À§Ä¡ÀÇ ¿øº»ÀÎ buf¸¦ Àо °ø¹éÀ» Á¦¿ÜÇÑ ¹Ù·Î ÀÌÀü ¹®ÀÚ¸¦ ã°í ÀÌ ¹®ÀÚÀÇ °ªÀ¸·ÎºÎÅÍ Ã¹ ¹®ÀÚÀÇ Ã³¸® ¹æ½ÄÀ» °áÁ¤ÇÑ´Ù. ÀÌ ¹®ÀÚ°¡ °³ÇàÄڵ峪 ¸¶Ä§Ç¥À̰ųª ¶Ç´Â ¹®¼­ÀÇ Ã³À½¿¡ µµ´ÞÇÏ¸é ¼±Åÿµ¿ªÀÇ Ã¹ ¹®ÀÚ°¡ ¹®ÀåÀÇ Ã³À½ÀÌ°í ±× ¿ÜÀÇ °æ¿ì´Â ¹®ÀåÀÇ Áß°£ÂëÀ̶ó°í ÆÇ´ÜÇÏ°Ô µÈ´Ù.

º¯È¯ °á°ú ½á ³Ö±â

tbuf¿¡ ÀÖ´Â ¹®ÀÚ¿­À» º¯È¯ ¿Ï·á ÇßÀ¸¸é ÀÌ ¹®ÀÚ¿­À» ¿ø·¡ ¹®ÀÚ¿­°ú ´ëü½ÃŲ´Ù. ¿ø·¡ÀÇ º¯È¯ ´ë»óÀ» Delete·Î »èÁ¦ÇÏ°í Insert·Î tbuf¸¦ ´Ù½Ã »ðÀÔÇÏ¸é º¯È¯ °á°ú°¡ ¹®¼­¿¡ ±â·ÏµÈ´Ù. »èÁ¦, »ðÀÔ À§Ä¡´Â ¸ðµÎ ºí·ÏÀÇ ½ÃÀÛÀ§Ä¡ÀÎ SelFirstÀε¥ º¯È¯ ´ë»óÀ» ¼±Á¤ÇÒ ¶§ SelFirst°¡ ´ë»óÀÇ ¼±µÎ¸¦ °¡¸®Å°µµ·Ï Çسõ¾Ò´Ù. µÎ µ¿ÀÛÀº ÆíÁý ±×·ìÀ¸·Î ¹­¾î¾ß ÇÑ ¹ø¿¡ Ãë¼ÒÇÒ ¼ö ÀÖÀ¸¹Ç·Î Delete, Insert È£Ãâ¹®Àº StartUndoGroup, EndUndoGroupÀ¸·Î µÑ·¯ ½Î¾ß ÇÑ´Ù.

µÞÁ¤¸®

´ë¼Ò¹®ÀÚ º¯È¯À» ÇÑ ±ÛÀÚ¿¡ ´ëÇؼ­¸¸ ÇÑ °æ¿ì ´ÙÀ½ ±ÛÀÚ·Î ÀÚµ¿ À̵¿ÇÑ´Ù. ÀÌ·¸°Ô ÇÏ¸é ´ÜÃàÅ°¸¦ °è¼Ó ´­·¯¼­ ¿¬¼ÓÀûÀÎ ¹®ÀÚ¿­À» ¿øÇÏ´Â ±æÀ̸¸Å­ º¯È¯ÇÒ ¼ö ÀÖ´Ù. ¸ðµç º¯È¯ ÀÛ¾÷ÀÌ ¿Ï·áµÇ¸é º¯È¯ ´ë»óÀ» À§ÇÑ ÀӽùöÆÛ tbuf¸¦ ÇØÁ¦ÇÏ°í º¯È¯ °á°ú°¡ º¸À̵µ·Ï È­¸éÀ» ¹«È¿È­ÇÑ´Ù. À̶§ ¹«È¿È­ ½ÃÀÛ ½ÃÁ¡Àº º¯È¯ ´ë»óÀÇ ¼±µÎÀÎ SelFirst ÀÌÈÄÀÌ¸ç ±× ¾ÕÀº º¯ÇÒ ¸®°¡ ¾øÀ¸¹Ç·Î ´Ù½Ã ±×¸®Áö ¾Ê¾Æµµ µÈ´Ù. ÀÚµ¿ À̵¿ ±â´É°ú ¹®ÀÚ º¯È¯¿¡ ÀÇÇØ Ä³·µÀÇ À§Ä¡°¡ º¯°æµÉ ¼ö ÀÖÀ¸¹Ç·Î SetCaret ÇÔ¼ö¸¦ È£ÃâÇÏ¿´´Ù.

CApiEdit°¡ ´ë¼Ò¹®ÀÚ º¯È¯ ±â´ÉÀ» Á¦°øÇϹǷΠȣ½ºÆ®´Â ¸Þ´º°¡ ¼±ÅÃµÉ ¶§ Àû´çÇÑ Àμö¿Í ÇÔ²² ÀÌ ÇÔ¼ö¸¦ ºÒ·¯ÁÖ¸é µÈ´Ù.

 

void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

     ....

     case IDM_EDIT_UPPER:

          pSi->Ae.ChangeCase(0);

          break;

     case IDM_EDIT_LOWER:

          pSi->Ae.ChangeCase(1);

          break;

     case IDM_EDIT_REVERSE:

          pSi->Ae.ChangeCase(2);

          break;

     case IDM_EDIT_UPPERFIRST:

          pSi->Ae.ChangeCase(3);

          break;

     case IDM_EDIT_UPPERSENT:

          pSi->Ae.ChangeCase(4);

          break;

 

È£ÃâÇÏ´Â ÇÔ¼ö´Â ¸ðµÎ ChangeCaseÀÌµÇ actionÀμö¸¸ ´Ù¸£´Ù. ¿µ¹® ¹®¼­¸¦ ¿­¾î ³õ°í Å×½ºÆ®Çغ¸¸é Àß µ¿ÀÛÇÒ °ÍÀÌ´Ù. ´ë¹®ÀÚ·Î, ¼Ò¹®ÀÚ·Î ¸í·É¿¡ ´ëÇؼ­´Â °¢°¢ <Ctrl+U>, <Ctrl+L> ´ÜÃàÅ°°¡ ÇÒ´çµÇ¾î ÀÖÀ¸¹Ç·Î ¿øÇÏ´Â À§Ä¡¿¡¼­ ¶Ç´Â ¿øÇÏ´Â ¸¸Å­ ¼±ÅÃÇÑ »óÅ¿¡¼­ Å°¸¸ ´­·¯µµ Áï½Ã º¯È¯µÈ´Ù.