°¡.¼Ó¼º Ãß°¡

ÇöÀç °ËÁ¤»ö Ææ¿¡ Èò»ö ºê·¯½Ã·Î¸¸ µµÇüÀ» ±×¸®¹Ç·Î Á¶±Ý ½ä··ÇÑ °¨ÀÌ Àִµ¥ µµÇü¿¡ ¼Ó¼ºÀ» ÁÖ¾î ¼±ÀÇ ±½±â¿Í »ö»ó, ¸éÀÇ »ö»óÀ» ¹Ù²Ü ¼ö ÀÖµµ·Ï ÇØ º¸ÀÚ. ApiEdit06 ÇÁ·ÎÁ§Æ®¸¦ »õ·Î ¸¸µé°í ´ÙÀ½ ½Ç½ÀÀ» ÁøÇàÇÑ´Ù. ¼Ó¼ºÀº °¢ µµÇüº°·Î ´Ù¸£°Ô ÁöÁ¤ÇÒ ¼ö ÀÖ¾î¾ß ÇϹǷΠµµÇüÀÇ Á¤º¸¸¦ ÀúÀåÇÏ´Â DObject ±¸Á¶Ã¼¿¡ °ü·Ã ¸â¹ö¸¦ Ãß°¡ÇÑ´Ù. ±â¾ïÇؾßÇÒ Á¤º¸ÀÇ ¾çÀÌ ´Ã¾î³µÀ¸¹Ç·Î ÀÚ·á ±¸Á¶°¡ È®ÀåµÇ¾î¾ß ÇÑ´Ù.

 

struct DObject

{

   DTool Type;

   RECT rt;

   unsigned short Flag;

   short LineWidth;

   COLORREF LineColor;

   COLORREF PlaneColor;

};

 

¼±ÀÇ ±½±â, ¼± »ö»ó, ¸éÀÇ »ö»óÀ» ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç »ö»óÀÇ °æ¿ì -1ÀÇ Æ¯ÀÌ°ªÀ» Åõ¸í»öÀ¸·Î Á¤ÀÇÇß´Ù. ¸éÀ» ä¿ìÁö ¾Ê´Â »ç°¢Çü°ú Ÿ¿øÀ» ±×¸± ÇÊ¿äµµ ÀÖÀ¸¹Ç·Î ¸éÀÇ Åõ¸í 󸮵µ ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. °³º° µµÇüÀÇ ¼Ó¼ºµé ¿Ü¿¡ Àü¿ª ¿É¼ÇÀ» ±â¾ïÇÒ º¯¼öµµ ÇÊ¿äÇѵ¥ °¢ ¿É¼Çº°·Î µû·Î º¯¼ö¸¦ ¸¸µé ¼öµµ ÀÖÁö¸¸ µµÇüÀÇ ¼Ó¼ºÀÌ DObject ±¸Á¶Ã¼¿¡ Æ÷ÇԵǾî ÀÖÀ¸¹Ç·Î DObjectÇüÀÇ ±¸Á¶Ã¼ º¯¼ö Çϳª¸¦ ¼±¾ðÇÏ°í ÀÌ º¯¼öÀÇ ¿É¼Ç ¸â¹öµéÀ» Àü¿ª ¼³Á¤À¸·Î »ç¿ëÇÏ¸é µÈ´Ù.

 

DObject Opt;

 

Opt ±¸Á¶Ã¼ÀÇ ³ª¸ÓÁö ¸â¹ö(Type, rt, Flag)´Â »ç¿ëµÇÁö ¾ÊÀ¸¸ç ¼Ó¼º°ú °ü·ÃµÈ Á¤º¸¸¸ »ç¿ëµÈ´Ù. µµÇüÀÇ ¼Ó¼ºÀ» ÁöÁ¤ÇÏ´Â Àü¿ª ¿É¼ÇÀ» µµÇü°ú °°Àº ±¸Á¶Ã¼·Î ¼±¾ðÇϸé ÀÌÈÄ µµÇüÀÇ ¿É¼ÇÀÌ ´õ ´Ã¾î³ªµµ Àü¿ª ¿É¼Ç º¯¼ö¸¦ ´Ã¸± ÇÊ¿ä°¡ ¾ø¾î È®Àå¿¡ À¯¸®ÇÏ´Ù. OnCreate¿¡¼­ ´ÙÀ½°ú °°ÀÌ Àü¿ª ¿É¼ÇÀ» ÃʱâÈ­ÇÑ´Ù.

 

LRESULT OnCreate(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

   ....

   Opt.Type=(DTool)-1;

   Opt.LineWidth=3;

   Opt.LineColor=RGB(0,0,0);

   Opt.PlaneColor=RGB(0,255,0);

   return 0;

}

 

±½±â 3ÀÇ °ËÁ¤»ö ¼±, ÃÊ·Ï»öÀÇ ¸é»ö»óÀ¸·Î ¼³Á¤Çß´Ù. Åë»ó ÀÌ·± ¼Ó¼ºÀº ½ºÅå ¿ÀºêÁ§Æ®ÀÇ ¼Ó¼º´ë·Î ±½±â 1ÀÇ °ËÁ¤»ö ¼±¿¡ Èò»öÀÇ ¸éÀ» »ç¿ëÇϴµ¥ Å×½ºÆ®ÀÇ ÆíÀǸ¦ À§ÇØ ¶Ñ·ÇÇÏ°Ô ±¸ºÐµÉ ¼ö ÀÖ´Â ¼Ó¼ºÀ» »ç¿ëÇß´Ù. ÃÖÁ¾ ¸±¸®ÁîÇÒ ¶§´Â Á» ´õ ¹«³­ÇÑ ±âº»°ªÀ¸·Î º¯°æÇÏ´Â °ÍÀÌ ÁÁ´Ù. OptÀÇ TypeÀ» -1·Î ¼³Á¤ÇÏ´Â ÀÌÀ¯´Â ÀÌ ±¸Á¶Ã¼°¡ ½ÇÁ¦ µµÇü °´Ã¼°¡ ¾Æ´Ï¶ó Àü¿ª ¿É¼Ç°ªÀ» ±â¾ïÇÏ´Â ¿ëµµ·Î »ç¿ëµÈ´Ù´Â °ÍÀ» Ç¥½ÃÇÑ´Ù. ÀÌ °ªÀº Â÷ÈÄ ¼³Á¤ ´ëÈ­»óÀÚ¿¡¼­ Àü¿ª ¿É¼ÇÀ̶ó´Â °ÍÀ» ±¸ºÐÇϱâ À§ÇØ »ç¿ëµÇ´Âµ¥ OptÀÇ ¼³Á¤°ªÀº »õ·Î »ý¼ºµÇ´Â µµÇüÀÇ ¼Ó¼º°ªÀ¸·Î »ç¿ëµÈ´Ù. AppendObject¿¡¼­ »õ·Î¿î µµÇüÀ» ¸¸µé ¶§ ÀÌ ¿É¼ÇµéÀ» µµÇü¿¡ ±â·ÏÇÑ´Ù.

 

BOOL AppendObject(DTool Type,int x1,int y1,int x2,int y2)

{

   ....

   arObj[arNum]->LineWidth=Opt.LineWidth;

   arObj[arNum]->LineColor=Opt.LineColor;

   arObj[arNum]->PlaneColor=Opt.PlaneColor;

   arNum++;

   return TRUE;

}

 

»õ·Î Ãß°¡µÇ´Â µµÇüÀº Opt º¯¼öÀÇ Àü¿ª ¼Ó¼ºÀ» ±×´ë·Î ´ëÀÔ¹ÞÁö¸¸ µµÇüÀÌ »ý¼ºµÈ ÈÄ °³º°ÀûÀ¸·Î ¼Ó¼ºÀ» º¯°æÇÒ ¼öµµ ÀÖ´Ù. OnPaint¿¡¼­´Â µµÇüÀÇ ¼Ó¼º´ë·Î Ãâ·ÂÇϴµ¥ °¢ µµÇüÀÇ ¼Ó¼º¿¡ ±â·ÏµÇ¾î Àִ´ë·Î Ææ°ú ºê·¯½Ã¸¦ ¸¸µé¾î ¼±ÅÃÇÑ ÈÄ µµÇüÀ» ±×¸®¸é µÈ´Ù. °³º° µµÇü¸¶´Ù ¼Ó¼ºÀÌ Á¦°¢°¢ÀÏ ¼ö ÀÖÀ¸¹Ç·Î ¸Å µµÇüÀ» ±×¸± ¶§¸¶´Ù GDI ¿ÀºêÁ§Æ®¸¦ »ý¼ºÇØ¾ß ÇÑ´Ù.

 

LRESULT OnPaint(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

   HDC hdc;

   PAINTSTRUCT ps;

   int idx;

   HPEN hPen,hOldPen;

   HBRUSH hBrush,hOldBrush;

 

   hdc=BeginPaint(hWnd, &ps);

   for (idx=0;idx<arNum;idx++) {

      if (arObj[idx]->LineColor == (COLORREF)-1) {

          hPen=(HPEN)GetStockObject(NULL_PEN);

      } else {

          hPen=CreatePen(PS_INSIDEFRAME,arObj[idx]->LineWidth,arObj[idx]->LineColor);

      }

      hOldPen=(HPEN)SelectObject(hdc,hPen);

      if (arObj[idx]->PlaneColor == (COLORREF)-1) {

          hBrush=(HBRUSH)GetStockObject(NULL_BRUSH);

      } else {

          hBrush=CreateSolidBrush(arObj[idx]->PlaneColor);

      }

      hOldBrush=(HBRUSH)SelectObject(hdc,hBrush);

      switch (arObj[idx]->Type) {

      case DT_LINE:

          ....

      }

      SelectObject(hdc,hOldPen);

      SelectObject(hdc,hOldBrush);

      if (arObj[idx]->LineColor != (COLORREF)-1) {

          DeleteObject(hPen);

      }

      if (arObj[idx]->PlaneColor != (COLORREF)-1) {

          DeleteObject(hBrush);

      }

   }

   if (NowSel != -1) {

      DrawTracker(hdc,NowSel);

   }

   EndPaint(hWnd, &ps);

   return 0;

}

 

»ö»óÀÌ -1ÀÎ °æ¿ì´Â Åõ¸íÀÎ »óŸ¦ ÀǹÌÇϹǷΠNULL_PEN, NULL_BRUSH ½ºÅå ¿ÀºêÁ§Æ®¸¦ ÀûÀýÈ÷ Àß È°¿ëÇØ¾ß ÇÑ´Ù. Åõ¸í»öÀÇ °³³äÀÌ ¾øÀ¸¸é ¼ÓÀÌ ºñ¾îÀִ Ÿ¿ø°ú »ç°¢ÇüÀ» ±×¸± ¼ö ¾øÀ» °ÍÀÌ´Ù. ÆæÀº ¹Ýµå½Ã PS_INSIDEFRAME À» »ç¿ëÇØ¾ß Çϴµ¥ ±×·¸Áö ¾ÊÀ¸¸é µµÇüÀÇ ¿µ¿ª ¹Ù±ùÀ¸·Î °æ°è¼±ÀÌ »ßÁ® ³ª°¡°Ô µÈ´Ù. ¿©±â±îÁö ÀÛ¼ºÇÏ¸é ¸ðµç µµÇüÀÌ °ËÁ¤»ö 3Çȼ¿¼±, ÃÊ·Ï»ö ¸éÀ» °¡Áö°Ô µÉ °ÍÀÌ´Ù.