Åø¹ÙÀÇ Ä÷³¼ö Á¤Çϱâ

ÀÌ ³»¿ëÀº 'µû¶óÇØ º¸¼¼¿ä Visual C++ 6'¿¡¼­ Âü°íÇÑ ³»¿ëÀÔ´Ï´Ù.

 

 

 À§ÀÇ ±×¸²¿¡¼­ º¸µí ¿ÞÂÊÀÇ Åø¹Ù´Â ¼¼·Î·Î 2ÁÙ·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

 Åø¹Ù¸¦ ÀÌ·¸°Ô ±¸¼ºÇϱâ À§Çؼ­ ´ÙÀ½°ú °°ÀÌ ÀÛ¾÷ÇÑ´Ù.

 

1. »õ·Î¿î Ŭ·¡½º·Î CToolBar Ŭ·¡½º¿¡¼­ ÆÄ»ýµÈ CMyToolBar Ŭ·¡½º¸¦ ¸¸µç´Ù.

 Å¬·¡½º À§Àúµå¿¡¼­´Â Base Class·Î CToolBar¸¦ Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡ Áö¿øµÇ´Â CToolBarCtrlÀ» Base Class ·Î ¸¸µç ´ÙÀ½, CToolBarCtrlÀ» ¸ðµÎ CToolBar·Î °íÄ£´Ù.

 

2. CMyToolBarÀÇ ¸â¹öº¯¼ö·Î ´ÙÀ½°ú °°ÀÌ SetColumns() ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.

void CMyToolBar::SetColumns(UINT nColumn)
{
        int nCount = GetToolBarCtrl().GetButtonCount();

        for(int i=0; i<nCount; i++) {
                UINT nStyle = TBBS_CHECKGROUP;
                BOOL bWrap = (((i+1) % nColumn) == 0);

                if(bWrap)
                        nStyle |= TBBS_WRAPPED;
                else
                        nStyle &= ~ TBBS_WRAPPED;
                
                SetButtonStyle(i, nStyle);
        }
        Invalidate();
        GetParentFrame()->RecalcLayout();
}

 

3. MainFrm.h ÆÄÀÏ¿¡ »õ·Î ¸¸µç Åø¹Ù Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§ÇØ Çì´õÆÄÀÏÀ» ÀÎŬ·çµå ÇÑ´Ù.

 

4. »õ·Î ¸¸µç CMyToolBarÀÇ Çì´õÆÄÀÏÀ» ´ÙÀ½°ú °°ÀÌ MainFrm.h ÆÄÀÏ¿¡ Ãß°¡ÇÑ´Ù.

protected:  // control bar embedded members
        CStatusBar  m_wndStatusBar;
        CToolBar    m_wndToolBar;
        CMyToolBar  m_wndMyToolBar;

 

5. MainFrm.cpp ÆÄÀÏ¿¡ ´ÙÀ½ ±½Àº ±Û¾¾ºÎºÐÀ» Ãß°¡ÇÑ´Ù.

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
        if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
                return -1;

        if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
                | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
                !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
        {
                TRACE0("Failed to create toolbar\n");
                return -1;      // fail to create
        }

        if (!m_wndStatusBar.Create(this) ||
                !m_wndStatusBar.SetIndicators(indicators,
                  sizeof(indicators)/sizeof(UINT)))
        {
                TRACE0("Failed to create status bar\n");
                return -1;      // fail to create
        }
        
        if(!m_wndMyToolBar.Create(this, WS_CHILD|WS_VISIBLE|CBRS_SIZE_FIXED|
                CBRS_LEFT|CBRS_TOOLTIPS|CBRS_FLYBY , IDR_TOOLBAR1)
                || !m_wndMyToolBar.LoadToolBar(IDR_TOOLBAR1))
        {
                TRACE0("Failed to create toolbar\n");
                return -1;
        }

        m_wndMyToolBar.SetColumns(2);


        // TODO: Delete these three lines if you don't want the toolbar to
        //  be dockable
        m_wndMyToolBar.EnableDocking(CBRS_ALIGN_LEFT | CBRS_ALIGN_RIGHT);
        m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
        EnableDocking(CBRS_ALIGN_ANY);  
        // ±âÁ¸ÀÇ Åø¹Ù¸¦ ¾ø¾Ø´Ù¸é ÀÌ ºÎºÐµµ ´ÙÀ½Ã³·³ °íÃÄ¾ß ÇÔ
        // EnableDocking(CBRS_ALIGN_LEFT | CBRS_ALIGN_RIGHT);  

        DockControlBar(&m_wndToolBar);
        DockControlBar(&m_wndMyToolBar);

        return 0;
}

 

- the end of this article -