Color Picker (SDI¿¡¼­ Dialog ·Î ³ªÅ¸³½ °Í)

 

 À§ÀÇ ±×¸²Àº  Ä÷¯ ¼±ÅÃÀ» À§ÇÑ ¼¿ÇÁ µå·ÎÀ× ÄÁÆ®·ÑÀÔ´Ï´Ù. CodeGuru¿¡µµ ÀÖ±¸, ºñÁÖ¾ó C++ 6 ¿Ïº®°¡À̵å Ã¥¿¡µµ ³ª¿ÍÀÖ´õ±º¿ä. °Å±ä ´ÙÀ̾ó·Î±× º£À̽º·Î ¸¸µé¾îÁ® ÀÖ¾ú´Âµ¥ ±×°É SDI¿¡¼­ ¸ð´Þ ´ÙÀ̾ó·Î±× ¹Ú½º·Î Ãâ·ÂµÇ°Ô ¸¸µé¾î º¸¾Ò½À´Ï´Ù. ¹¹ °°Àº °Å´Ï±î ¹Ù²Ù´Â °Ç °£´ÜÇÏÁö¿ä..

 1. ¿ì¼± ¼Ò½º¸¦ ¹Þ½À´Ï´Ù.   ¿¹Á¦ ¼Ò½ºµµ ÀÖ¾î¿ä.. ColorPicker.h / cpp, ColorPopup.h / cpp  ÀÌ·¸°Ô 4°³ÀÇ ÆÄÀÏÀÌ µé¾îÀÖ½À´Ï´Ù. ±×¸®°í´Â º¹»çÇØ ³ÖÀº ´ÙÀ½¿¡ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡...

2. Ä÷¯ ¼±ÅÃÀ» ÇÒ ´ÙÀ̾ó·Î±×¸¦ Çϳª ¸¸µì´Ï´Ù. ´ÙÀ̾ó·Î±× ID ´Â IDD_COLORDLG ·Î Çϱâ·Î ÇÏÁÒ.

3. À§ÀÇ ±×¸²Ã³·³ ´ÙÀ̾ó·Î±× À§¿¡´Ù ÄÁÆ®·ÑµéÀ» ¹èÄ¡ÇÕ´Ï´Ù.
 °£´ÜÈ÷ ¼³¸íÇÏÀÚ¸é ¿ì¼± Á¦ÀÏ À§¿¡ Static Text ÄÁÆ®·ÑÀÌ À§Ä¡Çϰí, ±× ¿À¸¥ÂÊ¿¡ ¼¿ÇÁ µå·ÎÀ× ÄÁÆ®·Ñ·Î µÐ°©ÇÒ ¹öư ÄÁÆ®·ÑÀ» Çϳª µÓ´Ï´Ù. º¸À̱⿣ ÄÞº¸¹Ú½º ºñ½º¹«·¹ÇÏ°Ô º¸ÀÌÁö¸¸ ¹öưÀÌ µÐ°©ÇÑ °Ì´Ï´Ù. ¾Æ·¡¸¦ Group Box·Î °¨½Î°í ±× ¾È ¿ÞÂÊ¿¡´Â picture ÄÁÆ®·ÑÀ» ³õ°í, ¿À¸¥ÂÊ¿¡´Â RGB¸¦ Ç¥½ÃÇÒ Static Text¿Í Edit Box¸¦ 3°³¾¿ ³õ½À´Ï´Ù.

 Button Control - ID : IDC_COLORPICK   Ä¸¼Ç : Ä÷¯ ¼±ÅÃ
 Group Box       - ID : IDC_STATIC          Ä¸¼Ç : ¼±ÅÃµÈ Ä÷¯
 Picture Control - ID : IDC_FRAME
 Static Control   - ID : IDC_STATIC          Ä¸¼Ç : RED :
                          ID : IDC_STATIC          Ä¸¼Ç : GREEN:
                          ID : IDC_STATIC          Ä¸¼Ç : BLUE:
 Edit Box          - ID : IDC_RED ,  IDC_GREEN ,   IDC_BLUE              

4. ÄÁÆ®·ÑµéÀ» ´Ù ¿Ã·Á³õ¾ÒÀ¸¸é ÀÌ ´ÙÀ̾ó·Î±× ¹Ú½º¿¡ ¿¬°áµÉ Ŭ·¡½º¸¦ ¸¸µì´Ï´Ù. Ŭ·¡½º À̸§Àº CColorPickerDlg ¶ó°í ÇÏÁÒ. ±×¸®°í´Â ´ÙÀ̾ó·Î±× Çì´õÆÄÀÏÀÇ À§¿¡  #include "ColorPicker.h"  ¸¦ ½á³Ö¾î ÁÝ´Ï´Ù.

5. Ŭ·¡½º À§Àúµå¸¦ »ç¿ëÇØ¼­ ÄÁÆ®·ÑµéÀ» º¯¼ö¿Í ¿¬°á½ÃÄÑ ÁÝ´Ï´Ù. Edit BoxµéÀº °¢°¢ int Çü m_nRed, m_nGreen, m_nBlue ·Î Á¤ÇØÁØ ÈÄ, ÃÖ¼Ò°ª 0, ÃÖ´ë°ª 255·Î Á¤ÇØÁÝ´Ï´Ù. ±×·± ´ÙÀ½ ¹öư ÄÁÆ®·ÑÀº ¿ì¼± CButton ÇüÀ¸·Î Çϰí, m_ctrlColorPicker ¶ó´Â º¯¼öÀ̸§À» ÁÖÁÒ. ±×¸®°í´Â ColorPickerDlg.h ÆÄÀÏÀ» ¿­¾î

·Î ¹Ù²Ù¾î ÁÝ´Ï´Ù. ¿©±â±îÁö¸¸ Çϰí ÄÄÆÄÀÏÇϸé Ä÷¯ ¼±Åà ÄÁÆ®·ÑÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð CView °°Àº ´Ù¸¥ Ŭ·¡½º¿¡¼­ ÀÌ ´ÙÀ̾ó·Î±×¸¦ DoModal() °°Àº ÇÔ¼ö¸¦ ½á¼­ ºÒ·¯ ÁÖ¾î¾ß¸¸ ÇϰÚÁö¿ä..

6. ÄÁÆ®·Ñ ÃʱâÈ­

  Ä÷¯ ¼±Åà ÄÁÆ®·Ñ¿¡´Â SetDefaultText, SetCustomText ¶ó´Â ÇÔ¼ö°¡ Àִµ¥, ÀÌ°Ç Ä÷¯ ¼±Åà ÄÁÆ®·ÑÀÇ ¾Æ·¡À§·Î Ãâ·ÂµÉ ¹®ÀÚ¿­À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

 Å¬·¡½º À§Àúµå¿¡¼­ CColorPickerDlg Ŭ·¡½ºÀÇ WM_INITDIALOG ¸Þ½ÃÁö¸¦ ¿À¹ö¶óÀ̵ù ÇÕ´Ï´Ù.

7. Ä÷¯ ¼±Åà ÄÁÆ®·Ñ¿¡ ÀÔ·ÂµÈ °ªÀ» ¾ò¾î³»±â À§ÇØ CColorPickerDlg Ŭ·¡½º¿¡ COLORREF Çü m_crColor º¯¼ö¸¦ ¼±¾ðÇÕ´Ï´Ù.

8. ColorPickerDlg ÇÔ¼öÀÇ ´ÙÀ½ ºÎºÐÀ» °íĨ´Ï´Ù. Ä÷¯ °ª ÃʱâÈ­¿Í Ä÷¯ ¼±Åà ÄÜÆ®·Ñ°úÀÇ ¿¬°áÀ» À§ÇÑ ÄÚµåÀÔ´Ï´Ù. DDX_ColorPicker ÇÔ¼ö´Â MFC¿¡¼­ Áö¿øÇÏ´Â ÇÔ¼ö°¡ ¾Æ´Ï°í, µû·Î ¸¸µé¾îÁØ ÇÔ¼öÀÔ´Ï´Ù.

9. Ä÷¯ ¼±Åà ÄÁÆ®·ÑÀº »óȲ¿¡ µû¶ó ´ÙÀ½°ú °°Àº ÅëÁö ¸Þ½ÃÁö¸¦ ¹ß»ý½Ãŵ´Ï´Ù.

 ¿©±â¼­´Â Ä÷¯ ¼±Åà ÄÁÆ®·Ñ°ú ¿¡µðÆ® ¹Ú½ºÀÇ °ªÀÌ ¹Ù²î¾úÀ» ¶§ ¼­·Î¼­·Î °ªÀ» ¹Ù²Ù¾î ÁÖ±â À§ÇØ ÅëÁö ¸Þ½ÃÁö¸¦ ó¸®ÇÕ´Ï´Ù. ¿¡µðÆ® ¹Ú½ºÀÇ ÅëÁö¸Þ½ÃÁö´Â Ŭ·¡½º À§Àúµå¿¡¼­ ó¸®ÇÒ ¼ö ÀÖÁö¸¸ Ä÷¯ ¼±Åà ÄÁÆ®·ÑÀº Ŭ·¡½º À§Àúµå¿¡¼­ Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î Á÷Á¢ Äڵ带 ½á ÁÖ¾î¾ß ÇÕ´Ï´Ù.

 Å¬·¡½º À§Àúµå¸¦ ¿­¾î ¿¡µðÆ® ¹Ú½º 3°³(IDC_RED, IDC_GREEN, IDC_BLUE)ÀÇ EN_CHANGE ¸Þ½ÃÁö¸¦ ó¸®Çϰí, Ä÷¯ ¼±Åà ÄÁÆ®·ÑÀ» ó¸®ÇÑ ÄÚµå´Â ¿ì¼± ´ÙÀ½°ú °°½À´Ï´Ù.

 ÀÌ Äڵ带 ´ÙÀ½°ú °°ÀÌ °íĨ´Ï´Ù.

10. Á÷Á¢ Ãß°¡ÇÑ ON_MESSAGEÀÇ Çڵ鷯¸¦ CColorPickerDlg Ŭ·¡½ºÀÇ ¸â¹öÇÔ¼öó·³ Ãß°¡ÇÕ´Ï´Ù. -->  LRESULT OnSelChange(WPARAM wParam, LPARAM lParam)

 OnChangeEditÀÇ Çڵ鷯µµ ÀÔ·ÂÇϱ¸¿ä.

 ±×¸®°í CColorPickerDlg Ŭ·¡½º¿¡ UpdateSelColor() ÇÔ¼ö¸¦ Ãß°¡Çϰí, Ŭ·¡½º À§Àúµå¸¦ »ç¿ëÇÏ¿© WM_PAINT ¸Þ½ÃÁö¸¦ ¿À¹ö¶óÀ̵ùÇÕ´Ï´Ù. ÄÚµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

11. ºä¿¡¼­ DoModal ÇÔ¼ö¸¦ ºÒ·¯¼­ ½ÇÇà½ÃŰ°Å³ª Çϸç Àß ¶ã °Ì´Ï´Ù. ÇÊ¿äÇÏ´Ù¸é ¿©±â¼­ CColorPicker, CCoorPopup, CColorPickerDlg Ŭ·¡½º¸¦ °¶·¯¸®¿¡ Ãß°¡ÇØ ³Ö°í ÇÊ¿äÇÒ ¶§¸¶´Ù Ãß°¡ÇØ ½áµµ ÆíÇϰÚÁÒ..