ApiEdit´Â ÀÚµ¿°³Çà½Ã âÀÇ ¿À¸¥ÂÊ ³¡¿¡¼¸¸ ÀÚµ¿°³ÇàµÇµµ·Ï µÇ¾î Àִµ¥ °³ÇàÇÒ ¿À» Á÷Á¢ ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï Çغ¸ÀÚ. Åë½Å¸Á¿¡ ¿Ã¸®°Å³ª ÀÏÁ¤ÇÑ Çü½ÄÀ» °®Ãß¾î¾ß ÇÏ´Â ¹®¼ÀÇ °æ¿ì âÀÇ Å©±â¿¡ »ó°ü¾øÀÌ 80Ä÷³ Á¤µµ¿¡¼ ÀÚµ¿À¸·Î °³ÇàµÇµµ·Ï ÇÏ´Â Çü½ÄÀÌ ¸¹ÀÌ »ç¿ëµÈ´Ù. ÀÌ ¿É¼Ç ±¸ÇöÀ» À§ÇØ RightWrapÀ̶ó´Â º¯¼ö°¡ Ãß°¡µÇ¾úÀ¸¸ç ÀÌ º¯¼ö°¡ °¡¸®Å°´Â ¿¿¡¼ ÀÚµ¿À¸·Î °³ÇàµÈ´Ù. ´Ü ÀÌ °ªÀÌ 0À̸é âÀÇ ¿À¸¥ÂÊ ³¡¿¡¼ ÀÚµ¿°³ÇàµÇ¸ç ÃʱⰪÀº 0ÀÌ´Ù.
RightWrap º¯¼ö¸¦ º¯°æÇÏ´Â °ÍÀº Á¤·Ä »óŸ¦ ¹Ù²Ù´Â °Í°ú È¿°ú°¡ µ¿ÀÏÇϹǷΠSetWrap ÇÔ¼ö¿¡¼ ÀÌ ¿É¼ÇÀ» ó¸®Çϸç SetWrap ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ ¼öÁ¤µÈ´Ù.
void CApiEdit::SetWrap(int aWrap)
{
DWORD dwStyle;
nWrap=aWrap;
dwStyle=GetWindowLong(hWnd,GWL_STYLE);
if (nWrap && RightWrap==0) {
dwStyle = dwStyle & ~WS_HSCROLL;
xPos=0;
} else {
dwStyle = dwStyle | WS_HSCROLL;
}
SetWindowLong(hWnd,GWL_STYLE,dwStyle);
SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
Invalidate(-1);
UpdateLineInfo();
UpdateScrollInfo();
SetCaret();
}
ÀÚµ¿°³Çà »óÅÂÀÌ°í ÀÚµ¿°³Çà¿ÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ» ¶§(RightWrapÀÌ 0)¸¸ ¼öÆò ½ºÅ©·Ñ¹Ù¸¦ ¼û±æ ¼ö ÀÖ´Ù. ÀÚµ¿°³Çà »óÅÂ¶óµµ RightWrapÀÌ 0ÀÌ ¾Æ´Ñ °æ¿ì´Â À©µµ¿ì Æø°ú »ó°ü¾øÀÌ ÀÚµ¿°³ÇàµÇ¹Ç·Î À©µµ¿ì°¡ ¾ÆÁÖ ÀÛ¾ÆÁú ¶§¸¦ ´ëºñÇÏ¿© ¼öÆò ½ºÅ©·Ñ¹Ù¸¦ º¸¿©ÁÖ¾î¾ß ÇÑ´Ù. UpdateScrollInfo ÇÔ¼öµµ ¸¶Âù°¡Áö ÀÌÀ¯·Î ¼öÁ¤µÇ¾î¾ß ÇÑ´Ù.
void CApiEdit::UpdateScrollInfo()
{
....
if (nWrap == 0 || RightWrap != 0) {
....
ÀÚµ¿°³Çà »óÅ°¡ ¾Æ´Ï°Å³ª ¿À¸¥ÂÊ ¿ÀÌ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é ¼öÆò ½ºÅ©·Ñ¹ÙÀÇ ¹üÀ§¸¦ °»½ÅÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ÇÔ¼öµµ ¼öÁ¤ÇÑ´Ù.
void CApiEdit::SetNoFirstSpace(BOOL aNoFirstSpace)
{
bNoFirstSpace=aNoFirstSpace;
if (nWrap != 0 || RightWrap != 0) {
....
Á٠óÀ½ °ø¹é Çã¿ë ¿É¼ÇÀÌ º¯°æµÇ¾úÀ» ¶§ ÀÚµ¿°³Çà »óÅ°ųª ÀÚµ¿°³Çà¿ÀÌ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é Á¤·ÄÀ» ´Ù½Ã ÇØ¾ß ÇÑ´Ù. ÀÌ¿Ü¿¡ ÀÌ ¿É¼ÇÀÌ ¿µÇâÀ» ¹ÌÄ¡´Â °÷À¸·Î OnMouseMove¿¡¼ ¼±ÅÃÁß¿¡ ¼öÆòÀ¸·Î ÀÚµ¿ ½ºÅ©·ÑÇÏ´Â Äڵ尡 ÀÖÀ¸³ª ¹«½ÃÇϱâ·Î ÇÑ´Ù. ¿Ö³ÄÇÏ¸é º¸ÀÌÁöµµ ¾Ê´Â ¿¿¡¼ ÀÚµ¿°³ÇàµÇµµ·Ï ÇÏ´Â °æ¿ì°¡ ±ØÈ÷ µå¹°±â ¶§¹®ÀÌ´Ù. ÀÌ °ªÀÌ »ç¿ëµÇ´Â °÷Àº Á¤·ÄÀÇ ÇÙ½É ÇÔ¼öÀÎ GetLine ÇÔ¼öÀÌ´Ù.
void CApiEdit::GetLine(int Line, int &s, int &e)
{
TCHAR *p;
int len, acwidth;
TCHAR *EndPos=NULL;
TCHAR *EndPosNoSpace=NULL;
BOOL IsPrevDBCS=FALSE;
int Right;
if (RightWrap == 0) {
Right=frt.right-2;
} else {
Right=MarginWidth+RightWrap*FontWidth;
}
....
if (nWrap == 0 && RightWrap == 0) {
while (*p != ¡®\r¡¯ && *p != 0)
p++;
} else {
for (acwidth=MarginWidth;;) {
....
if (acwidth > max(Right, MarginWidth+FontHeight*4)) {
break;
}
....
frt.right-2¿¡¼ ÀÚµ¿°³ÇàÀ» Çß¾úÀ¸³ª ÀÌÁ¦ RightWrapÀÌ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é À©µµ¿ì Æø¿¡ »ó°ü¾øÀÌ ÀÌ ¿¿¡¼ ÀÚµ¿°³ÇàµÇ¾î¾ß ÇÑ´Ù. ÀÚµ¿°³ÇàµÉ Çȼ¿ ÁÂÇ¥´Â RightWrap°ú Æò±Õ ¹®ÀÚÆøÀÎ FontWidth¸¦ °öÇÑ °ª¿¡ ¸¶ÁøÆøÀ» ´õÇÑ °ªÀÌ µÈ´Ù. ¹®ÀÚÀÇ ÆøÀ» ´õÇØ ³ª°¡´Ù°¡ RightWrapÀÌ ÁöÁ¤ÇÑ ¿¿¡ À̸£¸é °Á¦·Î °³ÇàµÈ´Ù.
nWrap ¼³Á¤º¸´Ù´Â RightWrap ¼³Á¤ÀÌ ´õ ¿ì¼±À̱⠶§¹®¿¡ nWrapÀÌ 0ÀÌ´õ¶óµµ RightWrapÀÌ ÁöÁ¤µÇ¾î ÀÖÀ¸¸é ÀÌ ¿¿¡¼ °Á¦·Î °³ÇàµÈ´Ù. ´Ü, ÀÌ °æ¿ì ±ÛÀÚ´ÜÀ§·Î Á¤·ÄÀº ÇÒ ¼ö ¾øÀ¸¸ç ¹«Á¶°Ç ´Ü¾î ´ÜÀ§·Î¸¸ Á¤·ÄµÈ´Ù.