´ç±ÙÀº ÅؽºÆ® ÆíÁý±â°í Áö±Ý±îÁö ±âº»ÀûÀÎ ÆíÁý±â´ÉµéÀ» ¸¸µé¾î ¿Ô´Ù. ¹®ÀÚ¿À» »ðÀÔÇϰųª »èÁ¦ÇÏ°í Ŭ¸³º¸µå¸¦ ÅëÇØ ¼±Åÿµ¿ªÀ» º¹»çÇϰųª ºÙ¿©³Ö´Â µîÀÇ ±â´ÉÀº ÅؽºÆ® ÆíÁý±â¶ó¸é ´ç¿¬È÷ °®Ãß¾î¾ß ÇÒ Çʼö ±â´ÉµéÀÌ´Ù. ÀÌ Àå¿¡¼ ¸¸µé ÆíÁý±â´ÉÀº ±âº» ±â´ÉÀ̶ó±â º¸´Ù´Â ´Ù¼Ò °í±Þ ±â´É¿¡ ¼ÓÇÑ´Ù. Àß ¾²Áöµµ ¾ÊÀ¸¸ç ÇʼöÀûÀÎ ±â´Éµµ ¾Æ´ÏÁö¸¸ ÀÖÀ¸¸é ¾ðÁ¨°¡´Â µµ¿òÀÌ µÇ´Â ±×·± ±â´ÉµéÀÌ´Ù. ´Ù¸¥ ÆíÁý±âµéµµ ÀÌ Àå¿¡¼ ÀÛ¼ºÇÒ °í±Þ ÆíÁý±â´ÉÀ» ´Ù Á¦°øÇÏ°í Àֱ⠶§¹®¿¡ ÀÌÁ¦´Â ´õ ÀÌ»ó °í±Þ ±â´É Ãà¿¡ ¼ÓÇÑ´Ù°í º¸±â ¾î·Á¿öÁ³°í ¿ÀÈ÷·Á ¾øÀ¸¸é ¼·¼·ÇÑ °æ¿ì°¡ ¸¹´Ù.
±×·¡¼ ´ç±Ùµµ ½Ã´ëÀÇ È帧¿¡ ºÎÀÀÇϱâ À§ÇØ, ¼ÖÁ÷È÷ ¸»ÇÏÀÚ¸é ´Ù¸¥ ÆíÁý±â¿¡°Ô ¹Ð¸®Áö ¾Ê±â À§ÇØ ÀÌ·± °í±Þ ÆíÁý±â´ÉÀ» ÀÛ¼ºÇغ¸±â·Î Çß´Ù. °í±Þ ÆíÁý±â´ÉÀ̶ó°í Çؼ ºÒ°¡´ÉÇÑ °ÍÀ» °¡´ÉÇÏ°Ô ÇÏ´Â ¸¶¼ú °°Àº °ÍÀº ¾Æ´Ï¸ç »ç¿ëÀÚµéÀÌ ¿©·¯ ¹ø ÀÛ¾÷ÇØ¾ß ÇÒ µ¿ÀÛÀ» ÇÑ ¹ø¿¡ ÀÚµ¿À¸·Î ÇÏ´Â ÆíÀÇ ±â´É Á¤µµ·Î »ý°¢ÇÏ¸é µÈ´Ù. ¼±ÅÃÇÑ ¹üÀ§ÀÇ ÅؽºÆ®¸¦ ¹Ì¸® Á¤ÇØÁø ÀÛ¾÷ ±ÔÄ¢´ë·Î Á¶ÀÛÇÑ ÈÄ ´ëü½ÃÄÑ ÁÖ´Â ½ÄÀ¸·Î ±â´ÉÀ» ±¸ÇöÇϴµ¥ ³À̵µ´Â Áß±Þ Á¤µµ µÇ¸ç ÅؽºÆ® Á¶ÀÛÀ» À§ÇØ Æ÷ÀÎÅ͸¦ ¸¹ÀÌ »ç¿ëÇÑ´Ù. ÀÌ ÀåÀÇ ½Ç½ÀÀ» ÅëÇØ Æ÷ÀÎÅÍ¿¡ ´ëÇØ ¸¹Àº °ÍÀ» °æÇèÇØ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
Ç×»ó ±×·¡¿ÔµíÀÌ »õ·Î¿î ±â´ÉÀ» ÀÛ¼ºÇϱâ Àü¿¡ ÀÌÀü ÇÁ·ÎÁ§Æ®¸¦ º¹»çÇÏ¿© 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ÀÇ ¹®ÀÚ¿À» Á¶ÀÛÇÑ´Ù.
ÀÌ°Ç ¿ÏÀüÈ÷ ¾É¾Æ¼ ¶± ¸Ô±â´Ù. ¹®ÀÚ¿À» º¯È¯ÇÏ´Â µÎ °³ÀÇ API ÇÔ¼ö°¡ Á¦°øµÇ¹Ç·Î ºÒ·¯ Áֱ⸸ ÇÏ¸é µÈ´Ù. ´ë¹®ÀÚ·Î ¹Ù²Ü ¶§´Â CharUpper ÇÔ¼ö¸¦ È£ÃâÇÏ°í ¼Ò¹®ÀÚ·Î ¹Ù²Ü ¶§´Â CharLower ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ µÎ ÇÔ¼ö´Â ¿µ¹®ÀÚ°¡ ¾Æ´Ñ ¹®ÀÚ´Â ±×´ë·Î À¯ÁöÇϴ Ư¼ºÀÌ ÀÖÀ¸¹Ç·Î ÇѱÛÀ̳ª ¼ýÀÚ, ±âÈ£ µîÀÇ ¹®ÀÚ´Â º¯È¯µÇÁö ¾ÊÀ¸¸ç ¿ø·¡°ªÀ» À¯ÁöÇÑ´Ù.
À̰͵µ »ý°¢º¸´Ù ½¬¿ö¼ ¼¼ ¶± ¸Ô±â Á¤µµ´Â µÈ´Ù. p¿¡ tbufÀÇ ½ÃÀÛ ¹øÁö¸¦ ´ëÀÔÇÏ°í ¹öÆÛÀÇ ³¡±îÁö µ¹¸é¼ ´ë¹®ÀÚ´Â ¼Ò¹®ÀÚ·Î, ¼Ò¹®ÀÚ´Â ´ë¹®ÀÚ·Î ¹Ù²ãÁÖ¸é µÈ´Ù. ÀÓÀÇÀÇ ¹®ÀÚ°¡ ´ë¹®ÀÚÀÎÁö, ¼Ò¹®ÀÚÀÎÁö´Â IsCharUpper, IsCharLower ÇÔ¼ö·Î Á¶»çÇÒ ¼ö ÀÖ´Ù. ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚÀÇ Äڵ尪 Â÷ÀÌ´Â 0x20(32)À̹ǷΠÀ̸¸Å ´õÇϰųª »©ÁÖ¸é ´ë¼Ò¹®ÀÚ¸¦ ¹Ý´ë·Î ¸¸µé ¼ö ÀÖ´Ù. CharUpper, CharLower API ÇÔ¼ö´Â ³Î Á¾·á¹®ÀÚ¿À» Àμö·Î ¿ä±¸ÇϹǷΠÇÑ ¹®ÀÚ¸¦ º¯È¯ÇÒ ¶§´Â ¾µ ¼ö ¾ø´Ù.
ÀÌ ¸í·ÉÀÇ Á¤È®ÇÑ Àǹ̴ °¢ ´Ü¾îÀÇ ½ÃÀÛ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î made in korea¿¡ ´ëÇØ ÀÌ ¸í·ÉÀ» ³»¸®¸é Made In Korea·Î ¹Ù²ãÁÖ¸é µÈ´Ù. ¹öÆÛÀÇ Ã³À½ºÎÅÍ ³¡±îÁö ·çÇÁ¸¦ µ¹¸é¼ ±¸ºÐÀÚ ´ÙÀ½ÀÇ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù°í ³ª¸ÓÁö ¹®ÀÚ´Â ¼Ò¹®ÀÚ·Î ¹Ù²ãÁÖ¸é µÈ´Ù. ±¸ºÐÀÚ´Â ÇöÀç ¼±ÅÃµÈ ¹®¹ý ºÐ¼®±â¿¡ µû¶ó ´Þ¶óÁö¹Ç·Î ¾î¶² ¹®ÀÚ°¡ ´Ü¾îÀÇ ¼±µÎ°¡ µÉ °ÍÀΰ¡´Â ¼±ÅÃµÈ ºÐ¼®±â¿¡ µû¶ó ´Þ¶óÁø´Ù.
C ¾ð¾î ºÐ¼®±â´Â °ýÈ£³ª ¼¼¹ÌÄÝ·ÐÀ» ºÐ¼®±â·Î ÀνÄÇϹǷΠfor(idx=0;idx<10;idx++)¸¦ º¯È¯Çϸé For(Idx=0;Idx<10;Idx++) ÀÌ·¸°Ô º¯È¯µÉ °ÍÀÌ´Ù. ¿¹¿ÜÀûÀ¸·Î ù ¹ø° ±ÛÀÚ´Â ´Ü¾îÀÇ ¼±µÎ°¡ ¾Æ´Ï´õ¶óµµ ¹«Á¶°Ç ´ë¹®ÀÚ·Î ¹Ù²Û´Ù. ¼±Åÿµ¿ªÀÌ ÀÖ´Â »óÅ¿¡¼ ÀÌ ¸í·ÉÀ» ³»·È´Ù´Â °ÍÀº ¼±Åÿµ¿ªÀÇ Ã¹ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Ù¶ó´Â ¶æÀ¸·Î Çؼ®ÇÏ´Â °ÍÀÌ´Ù.
ÀÌ ¸í·ÉÀº ¹®ÀåÀ» ´ë»óÀ¸·Î ÇϹǷΠ¾à°£ ¾î·Á¿î Á¡ÀÌ ÀÖ´Ù. ¹®ÀåÀÇ Ã¹ ¹®ÀÚ¶õ ¸¶Ä§Ç¥ ´ÙÀ½ÀÇ ¹®ÀÚ ¶Ç´Â °³ÇàÄÚµå ´ÙÀ½ÀÇ ¹®ÀÚ¸¦ ÀǹÌÇ쵂 ´Ü, °ø¹éÀº ¹«½ÃÇÏ°í °è»êÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ¡®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> ´ÜÃàÅ°°¡ ÇÒ´çµÇ¾î ÀÖÀ¸¹Ç·Î ¿øÇÏ´Â À§Ä¡¿¡¼ ¶Ç´Â ¿øÇÏ´Â ¸¸Å ¼±ÅÃÇÑ »óÅ¿¡¼ Å°¸¸ ´·¯µµ Áï½Ã º¯È¯µÈ´Ù.