³ª.Ä¿¼­ °ü¸®

À̵¿Àº µµÇü Àüü¸¦ ¿òÁ÷À̹ǷΠ¾î¶² ºÎºÐÀ» µå·¡±×Çϳª 󸮰¡ ¶È°°Áö¸¸ Å©±â º¯°æÀÇ °æ¿ì´Â ¾î¶² Æ®·¡Ä¿¸¦ µå·¡±×Çߴ°¡¿¡ µû¶ó Á¶Á¤ÇØ¾ß ÇÒ ´ë»óÀÌ ´Þ¶óÁø´Ù. °¡·É µµÇüÀÇ ¿À¸¥ÂÊ º¯À» µå·¡±×Çϸé 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´Â Çѹø ¼±ÅÃµÈ ÅøÀ» °è¼Ó À¯ÁöÇϵµ·Ï ÀÛ¼ºµÇ¾î ÀÖÀ¸¸ç µµÇüÀ» ±×¸° Á÷ÈÄ¿¡ ¼±Åà »óÅ·Π¹Ù²îÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ±×·¡¼­ Æ®·¡Ä¿ À§¿¡¼­µµ ´Ù¸¥ µµÇüÀ» ±×¸± ¼ö ÀÖ´Ù.