À̵¿Àº µµÇü Àüü¸¦ ¿òÁ÷À̹ǷΠ¾î¶² ºÎºÐÀ» µå·¡±×Çϳª 󸮰¡ ¶È°°Áö¸¸ Å©±â º¯°æÀÇ °æ¿ì´Â ¾î¶² Æ®·¡Ä¿¸¦ µå·¡±×Çߴ°¡¿¡ µû¶ó Á¶Á¤ÇØ¾ß ÇÒ ´ë»óÀÌ ´Þ¶óÁø´Ù. °¡·É µµÇüÀÇ ¿À¸¥ÂÊ º¯À» µå·¡±×Çϸé rt.right°¡ Á¶Á¤µÇ¾î¾ß ÇÏ°í µµÇüÀÇ ¾Æ·¡ÂÊÀ» µå·¡±×Çϸé rt.bottomÀÌ ¹Ù²ð °ÍÀÌ´Ù. ±×·¡¼ µå·¡±×ÇÏ´Â ºÎºÐ¿¡ µû¶ó Ä¿¼¸¦ ´Ù¸£°Ô ÇÏ¿© ÇöÀç »óÅ¿¡¼ µå·¡±×ÇÒ °æ¿ì ¾î¶² º¯ÀÇ Å©±â°¡ Á¶Á¤µÇ´ÂÁö¸¦ Ç¥½ÃÇØ¾ß ÇÑ´Ù. ÀÌ Ã³¸®¸¦ Çϱâ À§Çؼ´Â Ä¿¼°¡ ¸î ¹ø Æ®·¡Ä¿ À§¿¡ ÀÖ´ÂÁö¸¦ Á¶»çÇÏ´Â ÇÔ¼ö°¡ ÇÊ¿äÇÏ´Ù.
int TrackerHitTest(int x,int y)
{
int i;
RECT trt;
POINT pt;
if (NowSel == -1) {
return 0;
}
pt.x=x;
pt.y=y;
for (i=1;i<=8;i++) {
GetTrackerRect(NowSel,i,&trt);
if (PtInRect(&trt,pt) == TRUE) {
return i;
}
}
return 0;
}
ÀÌ ÇÔ¼ö´Â ¼±ÅÃµÈ µµÇüÀÇ 1~8¹ø Æ®·¡Ä¿¸¦ ¼øÈ¸ÇÏ¸é¼ °¢ Æ®·¡Ä¿ ¿µ¿ª¾È¿¡ Àμö·Î ÁÖ¾îÁø (x,y)ÁÂÇ¥°¡ Æ÷ÇԵǾî ÀÖ´ÂÁö¸¦ Á¶»çÇÏ¿© ±× ¹øÈ£¸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à Ä¿¼°¡ Æ®·¡Ä¿ À§¿¡ ÀÖÁö ¾Ê´Ù¸é 0À» ¸®ÅÏÇÑ´Ù. Æ®·¡Ä¿ÀÇ ¿µ¿ªÀ» ±¸ÇÏ´Â GetTrackerRect ÇÔ¼ö´Â Æ®·¡Ä¿¸¦ ±×¸± ¶§µµ »ç¿ëµÇÁö¸¸ È÷Æ® Å×½ºÆ®¿¡µµ ¾ÆÁÖ À¯¿ëÇÏ°Ô »ç¿ëµÇ°í ÀÖ´Ù. µÎ ºÎºÐ¿¡¼ ¶È°°Àº Äڵ带 ¹Ýº¹Çؼ »ç¿ëÇϰí Àֱ⠶§¹®¿¡ ÇÔ¼ö·Î ºÐ¸®ÇØ µÐ °ÍÀÌ´Ù. OnSetCursor ÇÔ¼ö¿¡¼ Ä¿¼ À§Ä¡ÀÇ Æ®·¡Ä¿ ¹øÈ£¸¦ Á¶»çÇÏ°í Æ®·¡Ä¿ À§¿¡ ÀÖÀ¸¸é ÀûÀýÇÑ ¸ð¾çÀÇ Ä¿¼·Î º¯°æÇÑ´Ù.
LRESULT OnSetCursor(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
POINT pt;
int nHit;
static TCHAR *arCursor[]={0,IDC_SIZENWSE,IDC_SIZENS,IDC_SIZENESW,IDC_SIZEWE,
IDC_SIZEWE,IDC_SIZENESW,IDC_SIZENS,IDC_SIZENWSE};
if (NowTool == DT_SELECT) {
GetCursorPos(&pt);
ScreenToClient(hWnd,&pt);
nHit=TrackerHitTest(pt.x,pt.y);
if (nHit != 0) {
SetCursor(LoadCursor(NULL,arCursor[nHit]));
return TRUE;
}
}
return(DefWindowProc(hWnd,WM_SETCURSOR,wParam,lParam));
}
µµÇüÀÇ Å©±â Á¶Á¤ µ¿ÀÛÀº ¿î¿µÃ¼Á¦ÀÇ À©µµ¿ì Å©±â Á¶Á¤ µ¿ÀÛ°ú °°Àº °æ¿ìÀ̹ǷΠũ±â Á¶Á¤¿¡ ÇÊ¿äÇÑ Ä¿¼´Â ¸ðµÎ ½ºÅå Ä¿¼·Î ¹Ì¸® Á¤ÀǵǾî ÀÖ¾î ¸®¼Ò½º¸¦ µû·Î ¸¸µé Çʿ䰡 ¾ø´Ù. Æ®·¡Ä¿ ¹øÈ£¸¦ ÷ÀÚ·Î ÇÏ´Â ½ºÅå Ä¿¼ ¹è¿À» ÀÛ¼ºÇØ µÎ°í TrackerHitTest ÇÔ¼ö°¡ Á¶»çÇÑ ¹øÈ£¸¦ ¹è¿ ÷ÀÚ·Î »ç¿ëÇß´Ù. arCursor ¹è¿Àº OnSetCursor ÇÔ¼ö ³»¿¡¼¸¸ »ç¿ëµÇÁö¸¸ °ªÀÌ º¯°æµÉ ÇÊ¿ä´Â ¾øÀ¸¹Ç·Î staticÀ¸·Î ¼±¾ðÇØ¾ß ¼Óµµ»óÀÇ ºÒÀÌÀÍÀÌ ¾ø´Ù. Áö¿ª ¹è¿À» ÃʱâÈÇϴµ¥´Â »ó´çÇÑ ½Ã°£ÀÌ ¼Ò¿äµÈ´Ù. ÀÌ ¹è¿Àº ¹®ÀÚ¿ Æ÷ÀÎÅÍÀε¥´Ù ¶Ç OnSetCursor´Â ¿ö³« ÀÚÁÖ È£ÃâµÇ´Â ÇÔ¼ö¶ó ³Ê¹« ´Ê°Ô 󸮵Ǿ ¾ÈµÈ´Ù.
ÀÌ ÇÔ¼ö Áß°£ÀÇ Á¶°Ç¹®À» º¸¸é ¼±Åà ¸ðµåÀÏ ¶§¸¸ Æ®·¡Ä¿ À§¿¡¼ Ä¿¼¸¦ ¹Ù²Ùµµ·Ï µÇ¾î ÀÖ´Ù. µµÇüÀ» ±×¸®°í ÀÖ´Â Áß¿¡´Â Æ®·¡Ä¿ À§¿¡ ÀÖ´õ¶óµµ ¼±Åà »óŰ¡ ¾Æ´Ï¹Ç·Î Å©±â º¯°æ µ¿ÀÛÀ» ÇÒ ¼ö ¾øÀ¸¸ç µû¶ó¼ Ä¿¼¸¦ ¹Ù²ÙÁö ¾Ê¾Æ¾ß ÇÑ´Ù. ApiDraw´Â Çѹø ¼±ÅÃµÈ ÅøÀ» °è¼Ó À¯ÁöÇϵµ·Ï ÀÛ¼ºµÇ¾î ÀÖÀ¸¸ç µµÇüÀ» ±×¸° Á÷ÈÄ¿¡ ¼±Åà »óÅ·Π¹Ù²îÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ±×·¡¼ Æ®·¡Ä¿ À§¿¡¼µµ ´Ù¸¥ µµÇüÀ» ±×¸± ¼ö ÀÖ´Ù.