¼±Åÿµ¿ªÀ» Ç¥½ÃÇÏ´Â ±â´ÉÀ» ´Ù ÀÛ¼ºÇß´Ù. ÀÌÁ¦ ¸¶¿ì½ºÀÇ ¿òÁ÷ÀÓ¿¡ µû¶ó SelStart¿Í SelEnd¸¸ Àß Á¶Á¤ÇÏ°í ÀÛ¾÷¿µ¿ªÀ» ¹«È¿È½ÃÅ°¸é ³ª¸ÓÁö ÀÛ¾÷Àº OnPaint¿Í ±× ÀÏ´çµéÀÌ ¾Ë¾Æ¼ ÇÒ °ÍÀÌ´Ù. ¸¶¿ì½º ¸Þ½ÃÁö¸¦ ÇÁ·Î±×·¡¹ÖÇغ¸µµ·Ï ÇÏÀÚ. ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» Ŭ¸¯ÇÏ¸é ºí·Ï¼±ÅÃÀ» ½ÃÀÛÇÑ´Ù.
void OnLButtonDown(HWND hWnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)
{
if (SelStart != SelEnd) {
SelStart=SelEnd=0;
InvalidateRect(hWnd,NULL,TRUE);
}
off=GetOffFromXY(x+xPos,y+yPos);
SelStart=SelEnd=off;
SetCapture(hWnd);
bCapture=TRUE;
SetCaret();
}
¾ÕÂÊ Á¶°Ç¹®Àº ¼±Åÿµ¿ªÀÌ ÀÖÀ¸¸é ÇØÁ¦ÇÏ´Â ¹®ÀåÀÌ´Ù. ÀÌ¹Ì ¼±ÅõǾî ÀÖ´Â »óÅ¿¡¼ Ŭ¸¯ÇÏ¸é »õ·Î¿î ¼±Åÿµ¿ªÀ» ÁöÁ¤ÇØ¾ß ÇϹǷΠ±âÁ¸ÀÇ ¼±Åÿµ¿ªÀº Á¦°ÅÇØ¾ß ÇÑ´Ù. ¼±Åÿµ¿ªÀ» Á¦°ÅÇÏ·Á¸é SelStart¿Í SelEnd¸¦ ¸ðµÎ 0À¸·Î ¸¸µé¾î ÁÖ°í ȸéÀ» ¹«È¿ÈÇÏ¸é µÈ´Ù.
¹öÆ°À» Ŭ¸¯ÇÑ À§Ä¡°¡ °ð ÇöÀç ij·µ À§Ä¡°¡ µÇ´Âµ¥ ÀÌ À§Ä¡´Â ¼±ÅÃÀÇ ½ÃÀÛÁ¡ÀÌ µÇ¸ç µ¿½Ã¿¡ ¼±ÅÃÀÇ ³¡Á¡ÀÌ µÇ±âµµ ÇÑ´Ù. ±×·¡¼ ¹öÆ°À» Ŭ¸¯ÇÑ »óÅ¿¡¼´Â ij·µ¸¸ À̵¿ÇÏ°í ¼±Åÿµ¿ªÀº ¾ÆÁ÷ ¾ø´Ù. ÀÌ »óÅ·Π¸¶¿ì½º¸¦ ¿òÁ÷À̸é SelStart´Â ±×´ë·Î µÎ°í SelEnd°¡ ¸¶¿ì½º¸¦ ÂÑ¾Æ °¨À¸·Î½á ¼±Åÿµ¿ªÀÌ È®ÀåµÉ °ÍÀÌ´Ù. ºí·Ï¼±ÅÃÀÌ ½ÃÀ۵Ǹé Ä¿¼°¡ ÀÛ¾÷¿µ¿ªÀ» ¹þ¾î³ªµµ °è¼Ó ¸¶¿ì½º ¸Þ½ÃÁö¸¦ ¹Þ¾Æ¾ß ÇϹǷΠĿ¼¸¦ ĸóÇÏ¿´´Ù. ¸¶¿ì½º°¡ À̵¿ÇÒ ¶§ÀÇ Ã³¸®´Â ´ÙÀ½°ú °°´Ù.
void OnMouseMove(HWND hWnd, int x, int y, UINT keyFlags)
{
if (bCapture == FALSE) {
return;
}
off=SelEnd=GetOffFromXY(x+xPos,y+yPos);
SetCaret();
InvalidateRect(hWnd,NULL,TRUE);
}
ÀÏ´Ü Ä¸Ã³ »óÅ°¡ ¾Æ´Ï¸é, Áï ¼±ÅÃÀ» ÇÏ°í ÀÖ´Â ÁßÀÌ ¾Æ´Ï¸é °ð¹Ù·Î ¸®ÅÏÇÏ¿© ¾Æ¹« Àϵµ ÇÏÁö ¾Ê´Â´Ù. ±×·¡¼ ÀÌ ·çƾÀº ¸¶¿ì½º ¹öÆ°À» Ŭ¸¯ÇÑ »óÅ¿¡¼¸¸ ½ÇÇàµÈ´Ù. Ä¿¼°¡ ÀÖ´Â À§Ä¡°¡ »õ·Î¿î ÇöÀç À§Ä¡°¡ µÇ¸ç ¼±ÅÃÀÇ ³¡Á¡µµ ÀÌ À§Ä¡·Î È®ÀåµÈ´Ù. ij·µÀ» À̵¿½ÃÅ°°í ȸéÀ» ´Ù½Ã ±×¸®¸é ¸¶¿ì½º°¡ À̵¿ÇÑ ¸¸Å ¼±Åÿµ¿ªÀÌ È®ÀåµÇ¾î ÀÖÀ» °ÍÀÌ´Ù. ¸¶Áö¸·À¸·Î ¹öÆ°À» ³õÀ» ¶§´Â ¸¶¿ì½º ĸó¸¸ Ç®¾îÁÖ¸é µÈ´Ù.
void OnLButtonUp(HWND hWnd, int x, int y, UINT keyFlags)
{
bCapture=FALSE;
ReleaseCapture();
}
ĸó¸¦ Ç®¸é ÀÌÁ¦ ¼±ÅÃÀÌ ³¡³ª¸ç OnMouseMove¿¡¼´Â ´õ ÀÌ»ó ¼±Åÿµ¿ªÀ» È®ÀåÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ¸¶¿ì½º·Î ¼±Åÿµ¿ªÀ» ¸¸µå´Â 󸮰¡ ¿Ï·áµÇ¾ú´Ù. ½ÇÇàÇغ¸¸é Àß ¼±ÅÃµÉ °ÍÀÌ´Ù.