< Dialog Bar »ç¿ëÇϱâ >

project name : Dlgbar - SDI - ³ª¸ÓÁö´Â ¸ðµÎ µðÆúÆ®·Î Àû¿ë

Project - Add To Project - Component and Controls...

¿©±â¼­ Developer Studio Components ¼±Åà - Dialog bar ¼±Åà - insert¸¦ ´©¸¥´Ù.

Dialog bar name : Dialog Bar,

Member variable name : m_wndDlgBar ·Î Á¤Çß´Ù. ¹°·Ð ¸¶À½´ë·Î °íÃĵµ µÈ´Ù.

¾Æ·¡ÂÊÀÇ ¶óµð¿À ¹öưÀº ¿øÇÏ´Â ´ë·Î ¼±ÅÃÇϰí, ±× ¹Ø üũ¹Ú½º´Â µÑ´Ù üũµÈ »óÅ·ΠµÎÀÚ.

MainFrm.cpp ÆÄÀÏÀ» ¿­¾îº¸¸é Áß°£Âë¿¡¼­ ´ÙÀ½ºÎºÐÀ» º¼ ¼ö ÀÖ´Ù.

¡¡

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    ..........
        // TODO: Add a menu item that will toggle the visibility of the
        // dialog bar named "My Dialog Bar":
        //   1. In ResourceView, open the menu resource that is used by
        //      the CMainFrame class
        //   2. Select the View submenu
        //   3. Double-click on the blank item at the bottom of the submenu
        //   4. Assign the new item an ID: CG_ID_VIEW_MYDIALOGBAR
        //   5. Assign the item a Caption: My Dialog Bar

        // TODO: Change the value of CG_ID_VIEW_MYDIALOGBAR to an appropriate value:
        //   1. Open the file resource.h
        // CG: The following block was inserted by the 'Dialog Bar' component
        {
                // Initialize dialog bar m_wndDlgBar
                if (!m_wndDlgBar.Create(this, CG_IDD_MYDIALOGBAR, CBRS_RIGHT |
 CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE, CG_ID_VIEW_MYDIALOGBAR))
     ......... 

ÁÖ¼®¿¡¼­ À§ÀÇ TODO ºÎºÐÀº ¸Þ´º¿¡¼­ ´ÙÀ̾ó·Î±×¹Ù¸¦ º¸¿´´Ù°¡ °¨Ãß¾ú´Ù°¡ ÇÏ´Â ¸í·É¾î¸¦ Ãß°¡ÇÏ´Â °ÍÀ» ¼³¸íÇÑ °ÍÀ̰í, ¾Æ·¡ÂÊ TODO ºÎºÐÀº ´ÙÀ̾ó·Î±×¹Ù ID¸¦ ¿øÇÏ´Â ´ë·Î ¹Ù²Ù´Â °ÍÀ» ¼³¸íÇÑ °ÍÀÌ´Ù.

¨ç ¿ì¼± À§ÀÇ Äڵ忡¼­ ¹ØÁÙÄ£ ºÎºÐÀ» ¿øÇÏ´Â ID ·Î ¹Ù²Û´Ù.
- ¿©±â¼­´Â IDD_MYDLGBAR ·Î Á¤Çß´Ù.

¨è ´ÙÀ½À¸·Î Resources ÅÇ¿¡¼­ Dialog ºÎºÐÀ» º¸¸é CG_IDD_MYDIALOGBAR ¶ó´Â ID°¡ º¸À̴µ¥ À̰͵µ IDD_MYDLGBAR ·Î ¹Ù²ÙÀÚ. ÀÌ·¸°Ô ÇØ¼­ ´ÙÀ̾ó·Î±×¹Ù ID¸¦ ¿øÇÏ´Â ´ë·Î ¹Ù²Ü ¼ö ÀÖ´Ù.

¡¡

´ÙÀ½À¸·Î ¸Þ´º¿¡ ´ÙÀ̾ó·Î±×¹Ù¸¦ º¸¿´´Ù °¨Ãß¾ú´ÙÇÏ´Â Äڵ带 Ãß°¡ÇØ º¸ÀÚ.

¨ç String Table¿¡¼­ ID¸¦ º¸¸é CG_ID_VIEW_DIALOGBAR °¡ Àִµ¥ À̰ÍÀ» ID_VIEW_DIALOG_BAR ·Î ¹Ù²Û´Ù.

¨è ´ÙÀ½À¸·Î Menu - IDR_MAINFRAME - 'º¸±â(V)' ¿¡ ĸ¼ÇÀº '´ÙÀ̾ó·Î±× ¹Ù' , ID´Â À§¿¡¼­ ¹Ù²Û´ë·Î ID_VIEW_DIALOG_BAR ÀÎ ¸Þ´º¸¦ Çϳª Ãß°¡ÇÑ´Ù.

¨é ´ÙÀ½ Äڵ忡¼­ ¹ØÁÙÄ£ ºÎºÐÀ» ID_VIEW_DIALOG_BAR ·Î ¹Ù²Û´Ù.

 
/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
        ON_COMMAND_EX(CG_ID_VIEW_DIALOGBAR, OnBarCheck)
        ON_UPDATE_COMMAND_UI(CG_ID_VIEW_DIALOGBAR, OnUpdateControlBarMenu)
        //{{AFX_MSG_MAP(CMainFrame)

¨ê ´ÙÀ½ ÄÚµåÀÇ ¹ØÁÙÄ£ ºÎºÐµµ ID_VIEW_DIALOG_BAR ·Î °íÄ£´Ù.

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{       
       ................
                // Initialize dialog bar m_wndDialogBar
                if (!m_wndDialogBar.Create(this, IDD_MYDLGBAR, CBRS_TOP |
                      CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,
                    CG_ID_VIEW_DIALOGBAR))
       ................
                        

note) À§¿¡¼­ ¼³¸íÇÑ °Íó·³ ID¸¦ ¹Ù²ÙÁö ¾Ê°í ÀÖ´Â ±×´ë·Î »ç¿ëÇØµµ ¹«¹æÇÏÁö¸¸ ÇÁ·Î±×·¥
ÀÇ ÀÌÇØ¸¦ µ½±âÀ§ÇØ ID¸¦ º¸´Ù ÀǹÌÀÖ´Â ´Ü¾î·Î ¹Ù²Ù¾îÁØ °ÍÀÌ´Ù.

¡¡

- ´ÙÀ̾ó·Î±×¹Ù À̺¥Æ® ¾ò±â

À§¿Í °°ÀÌ ´ÙÀ̾ó·Î±×¹Ù¸¦ ¸¸µç µÚ Ŭ·¡½º À§Àúµå¸¦ ½ÇÇà½ÃÄÑ º¸¸é 5.0 ¹öÀü¿¡¼­´Â ÄÜÆ®·ÑÀÇ ¸Þ½ÃÁö°¡ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. (6.0 ¹öÀü¿¡¼­´Â ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù¸¸.)

±×·¡¼­ Ŭ·¡½º À§Àúµå·Î´Â ´Ù¾çÇÑ À̺¥Æ®¸¦ °¡·Îä¼­ ½ÇÇàÇÏ´Â ÇÔ¼ö¸¦ ¸¸µé¼ö°¡ ¾ø½À´Ï´Ù. ±× ÀÌÀ¯´Â Ŭ·¡½º À§Àúµå¿¡ µî·ÏµÇ¾î Àִ Ŭ·¡½º°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù. ´ÙÀ̾ó·Î±×¹Ù¸¦ ¸¸µé¸é¼­ º¸¸é ´ÙÀ̾ó·Î±×¹Ù¿¡ °ü°èµÈ ÄÚµå´Â ¸ðµÎ MainFrm.cpp ¾È¿¡ ±â¼úµÇ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

´ÙÀ̾ó·Î±×¹Ù´Â Ŭ·¡½º À§Àúµå·Î µî·ÏÇÏ¿© ¸¸µç °ÍÀÌ ¾Æ´Ï°í ´ëÈ­»óÀÚ¸¦ ¸¸µç´ÙÀ½ ÀÌ ´ëÈ­»óÀÚ¸¦ CDialog ¸â¹öÀÇ º¯¼ö·Î ¿¬°áÇÑ °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù. ±×·¸´Ù°í À̺¥Æ®¸¦ ¸¸µéÁö ¸øÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. MFCÀÇ ¸ÅÅ©·Î¿¡´Â ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ ON_CBN, ON_LBN, ON_EN, ON_BN °è¿­ÀÇ ¸Þ½ÃÁö ¸ÊÇÎ ¸ÅÅ©·Î¸¦ ¸¸µé¾î µÎ¾ú½À´Ï´Ù. ON_CBN Àº ÄÞº¸¹Ú½º¿¡¼­ À̺¥Æ®°¡ ¹ß»ýÇÏ¿´À» ¶§ÀÇ ¸Þ¼¼Áö ¸ÅÅ©·ÎÀ̸ç ON_LBNÀº ¸®½ºÆ® ¹Ú½º¿¡¼­, ON_ENÀº ¿¡µðÆ® ¹Ú½º¿¡¼­, ON_BNÀº ¹öư¿¡¼­ÀÔ´Ï´Ù.

¨ç ´ÙÀ̾ó·Î±×¹Ù¿¡ ´ÙÀ½ÀÇ ÄÜÆ®·ÑµéÀ» Ãß°¡ÇÕ´Ï´Ù. ¶óµð¿À ¹öưÀº ID¿Í tap order°¡ ¹Ýµå½Ã ¿¬¼ÓÀûÀ̾î¾ß ÇÕ´Ï´Ù. ±× ÀÌÀ¯´Â ¾Æ·¡ ¨è¹øÀÇ ON_CONTROL_RANGE¿Í °ü°è°¡ ÀÖ½À´Ï´Ù.

¿¡µðÆ® ¹Ú½º - ID : IDC_EDIT1
¹öư - ID : IDC_BUTTON1
ÄÞº¸ ¹Ú½º - ID : IDC_COMBO1
¶óµð¿À ¹öư 3°³ - ID : IDC_RADIO1 ~ IDC_RADIO3
üũ ¹Ú½º - ID : IDC_CHECK1

¨è MainFrm.cpp ÆÄÀÏ¿¡¼­ ´ÙÀ½À» Ãß°¡ÇÕ´Ï´Ù.

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
        ON_COMMAND_EX(ID_VIEW_DIALOG_BAR, OnBarCheck)
        ON_UPDATE_COMMAND_UI(ID_VIEW_DIALOG_BAR, OnUpdateControlBarMenu)
        //{{AFX_MSG_MAP(CMainFrame)
                // NOTE - the ClassWizard will add and remove mapping macros here.
                //    DO NOT EDIT what you see in these blocks of generated code !
        ON_WM_CREATE()
        ON_BN_CLICKED(IDC_BUTTON1, OnButton1)   // <-Ãß°¡ : ¹öư Ŭ¸¯
        ON_CBN_SELCHANGE(IDC_COMBO1, OnComboChange)    //<-Ãß°¡ : ÄÞº¸¹Ú½º 
        ON_BN_CLICKED(IDC_CHECK1, OnCheck1)                // <-Ãß°¡ : üũ¹Ú½º
        ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO1, IDC_RADIO3, OnRadioButton1)
                                        // <-Ãß°¡ : ¶óµð¿À ¹öư

        //}}AFX_MSG_MAP
END_MESSAGE_MAP()  

¨ê MainFrm.h ¿¡µµ ´ÙÀ½ ³»¿ëÀ» Ãß°¡ÇÕ´Ï´Ù.

// Generated message map functions
protected:
        CDialogBar m_wndDialogBar;
        //{{AFX_MSG(CMainFrame)
        afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
        afx_msg void OnButton1();     // <-Ãß°¡ : ¹öưÀÇ Å¬¸¯
        afx_msg void OnComboChange();    //<-Ãß°¡ : ÄÞº¸¹Ú½º
        afx_msg void OnCheck1();           // <-Ãß°¡ : üũ¹Ú½º
        afx_msg void OnRadioButton1();     // <-Ãß°¡ : ¶óµð¿À ¹öư
 
        // NOTE - the ClassWizard will add and remove member functions here.
        //    DO NOT EDIT what you see in these blocks of generated code!
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()

¨ë MainFrm.cpp ¿¡ Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù.

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers

void CMainFrame::OnButton1()    // ¹öưÀÇ Çڵ鷯
{
        CEdit *pWnd = (CEdit *)m_wndDialogBar.GetDlgItem(IDC_EDIT1);
        // ´ÙÀ̾ó·Î±×¹Ù ¾ÈÀÇ ¿¡µðÆ® ¹Ú½ºÀÇ Æ÷ÀÎÅÍ ¾ò±â 

        CString str;
        
        pWnd->GetWindowText(str); // ¿¡µðÆ® ¹Ú½ºÀÇ ³»¿ë Àоî¿À±â
        AfxMessageBox(str);
}
void CMainFrame::OnComboChange()  // ÄÞº¸ ¹Ú½ºÀÇ Çڵ鷯
{
        CComboBox *pWnd = (CComboBox *)m_wndDialogBar.GetDlgItem(IDC_COMBO1);
        int num = pWnd->GetCurSel();
        
        CString str;

        pWnd->GetLBText(num, str);
        AfxMessageBox(str);
}
void CMainFrame::OnCheck1()  // üũ ¹Ú½ºÀÇ Çڵ鷯
{
        CButton *pCheck = (CButton *)m_wndDialogBar.GetDlgItem(IDC_CHECK1);
        CButton *pRadio = (CButton *)m_wndDialogBar.GetDlgItem(IDC_RADIO1); 
        
        // pCheck->SetCheck(pWnd->GetCheck() ? BST_UNCHECKED : BST_CHECKED);
        // üũǥ½Ã¸¦ toggle ÇÏ´Â  ÄÚµå
        // üũ¹Ú½º propertyÀÇ Styles - auto °¡ üũµÇ¾î ÀÖ´Ù¸é À§ ÄÚµå´Â ÇÊ¿ä¾ø´Ù.
        
        // ¶óµð¿À¹öưÀ» Enable/Disable ½ÃŰ´Â ºÎºÐ - CWnd::EnableWindow(BOOL) »ç¿ë
        if(pCheck->GetCheck()) pRadio->EnableWindow(false);
        else pRadio->EnableWindow(true);   
}
void CMainFrame::OnRadioButton1()  // ¶óµð¿À ¹öưÀÇ Çڵ鷯
{
        CButton *pRadio1 = (CButton *)m_wndDialogBar.GetDlgItem(IDC_RADIO1);
        CButton *pRadio2 = (CButton *)m_wndDialogBar.GetDlgItem(IDC_RADIO2);
        CButton *pRadio3 = (CButton *)m_wndDialogBar.GetDlgItem(IDC_RADIO3);
        
        // pRadio1->SetCheck(BST_CHECKED);
        // pRadio2->SetCheck(BST_UNCHECKED);
        // pRadio3->SetCheck(BST_UNCHECKED);
        // ¶óµð¿À ¹öư ¼±ÅÃÇ¥½Ã ÇÏ´Â ºÎºÐ       
        // ¶óµð¿À ¹öư propertyÀÇ Styles - auto °¡ üũµÇ¾î ÀÖ´Ù¸é À§ ÄÚµå´Â ÇÊ¿ä¾ø´Ù 

        if(pRadio1->GetCheck()) AfxMessageBox(CString("¶óµð¿À 1"));
        else if(pRadio2->GetCheck()) AfxMessageBox(CString("¶óµð¿À 2"));
        else AfxMessageBox(CString("¶óµð¿À 3"));
}

note 1)

Button ÄÁÆ®·Ñ¿¡´Â Push Button, Check Box, Radio Button, Group BoxÀÇ 4°¡Áö°¡ ÀÖ´Ù.
±×·¯¹Ç·Î ±×·¯ÇÑ ÄÁÆ®·Ñµéµµ ¸ðµÎ Button ÄÁÆ®·Ñ¿¡ ¾²ÀÌ´Â ¸ÅÅ©·Î¸¦ »ç¿ëÇÏ¿© Á¶ÀÛÇÑ´Ù.
MainFrameÀÇ ¸Þ½ÃÁö ¸Ê¿¡¼­ ¶óµð¿À¹öư ºÎºÐÀ» º¸ÀÚ.

ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO1, IDC_RADIO3, OnRadioButton1)

ÀÌ °ÍÀº ´ÙÀ½À» ÁÙ¿© ¾´ °ÍÀÌ´Ù.

ON_BN_CLICKED(IDC_RADIO1, OnRadioButton1)
ON_BN_CLICKED(IDC_RADIO2, OnRadioButton1)
ON_BN_CLICKED(IDC_RADIO3, OnRadioButton1)

ON_CONTROL_RANGE()´Â °°Àº Á¾·ùÀÇ ¸Þ½ÃÁö¸¦ ¹üÀ§·Î ¹­¾î ÇѲ¨¹ø¿¡ ó¸®ÇÒ ¼ö ÀÖµµ·Ï MFC 3.xºÎÅÍ Ãß°¡µÈ ¸ÅÅ©·ÎÀÌ´Ù. ÀÌ ¸ÅÅ©·Î¸¦ ¾²·Á¸é ÄÁÆ®·ÑµéÀÇ ID¿Í tap order°¡ ¿¬¼ÓÀûÀ̾î¾ß ÇÑ´Ù.

¼ø¼­°¡ ¸ÂÁö ¾Ê´Ù¸é tap order´Â CTRL-D¸¦ ´­·¯ °íÄ¥¼ö ÀÖ°í, ID´Â Resource.h¸¦ ¿­¾î ¿øÇÏ´Â ID¿¡ ¹è´çµÈ ¼ýÀÚ¸¦ ¿¬¼ÓÀûÀ¸·Î °íÄ¡¸é µÈ´Ù.

¡¡

note 2)

ÀڱⰡ ¾²´Â ÄÁÆ®·Ñ¿¡ ¿øÇÏ´Â ±â´ÉÀÇ ÇÔ¼ö°¡ ¾ø´Ù¸é CWnd ÀÇ ¸â¹öÇÔ¼ö¸¦ ã¾Æº¸ÀÚ.

´ÙÀ½Àº CWnd ¸â¹öÇÔ¼öÀÇ ÀϺÎÀÌ´Ù.

EnableWindow()
: À©µµ¿ì¸¦ »ç¿ë°¡´ÉÇÏ°Ô Çϰųª »ç¿ë ±ÝÁö½ÃŲ´Ù. »ç¿ëÀÌ ±ÝÁöµÈ À©µµ¿ì´Â ¸¶¿ì½º³ª Űº¸µå µî ÀÏüÀÇ ÀÔ·ÂÀ» ¹Þ¾ÆµéÀÏ ¼ö ¾ø´Ù. ÁÖ·Î ¹öư µîÀÇ Â÷Àϵå À©µµ¿ì¿¡ »ç¿ëµÈ´Ù.

GetClientRect()
: À©µµ¿ìÀÇ ÀÛ¾÷¿µ¿ªÀ» ±¸ÇÑ´Ù. Á»ó´ÜÀº Ç×»ó (0,0)ÀÌ¸ç ¿ìÇÏ´ÜÀº ÀÛ¾÷¿µ¿ªÀÇ Å©±â¸¦ ³ªÅ¸³½´Ù.

GetWindowRect()
: À©µµ¿ì°¡ Â÷ÁöÇϰí ÀÖ´Â ¿µ¿ªÀÇ È­¸éÁÂÇ¥¸¦ ±¸ÇÑ´Ù. ÀÌ ¿µ¿ª¿¡´Â ÀÛ¾÷¿µ¿ª»Ó¸¸ ¾Æ´Ï¶ó ŸÀÌÆ² ¹Ù, ½ºÅ©·Ñ ¹Ù, °æ°è¼±±îÁö ¸ðµÎ Æ÷ÇԵȴÙ.

GetWindowText() / SetWindowText()
: À©µµ¿ìÀÇ Å¸ÀÌÆ² ¹Ù¿¡ Ãâ·ÂµÇ¾î Àִ ĸ¼ÇÀ» ±¸ÇÑ´Ù. / º¯°æÇÑ´Ù. ÄÁÆ®·ÑÀÏ °æ¿ì ÄÁÆ®·ÑÀÇ ÅØ½ºÆ® ¹®ÀÚ¿­ÀÌ ÀÐÇôÁø´Ù. / º¯°æµÈ´Ù.

¡¡

note 3)

MFC 4.x¿¡´Â ´ÙÀ½°ú °°Àº ¸ÅÅ©·ÎµéÀÌ ÀÖ´Ù. (ÀϹÝÀûÀÎ °øÅë ¸ÅÅ©·Î Á¦¿Ü)

ON_COMMAND()

ON_COMMAND_RANGE()

ON_COMMAND_EX()

ON_COMMAND_EX_RANGE()

ON_UPDATE_COMMAND_UI()

ON_UPDATE_COMMAND_UI_RANGE()

ON_UPDATE_COMMAND_LI_REFLECT()

ON_NOTIFY()

ON_NOTIFY_RANGE()

ON_NOTIFY_EX()

ON_NOTIFY_EX_RANGE()

ON_NOTIFY_REFLECT()

ON_NOTIFY_REFLECT_EX()

ON_CONTROL()

ON_CONTROL_RANGE()

ON_CONTROL_REFLECT()

ON_CONTROL_REFLECT_EX()

ON_WM_CTLCOLOR_REFLECT()

ON_WM_DRAWITEM_REFLECT()

ON_WM_MEASUREITEM_REFLECT()

ON_WM_DELETEITEM_REFLECT()

ON_WM_CHARTOITEM_REFLECT()

ON_WM_VKEYTOITEM_REFLECT()

ON_WM_HSCROLL_REFLECT()

ON_WM_VSCROLL_REFLECT()

ON_WM_PARENTNOTIFY_REFLECT()