Åø¹Ù¿¡ Dropdown¹öư ³Ö±â


1.¿ä¾à

Åø¹Ù ¹öư¿¡ DropDown¹öưÀ» ³Ö´Â ¹æ¹ý


2.º»¹®

DropDown¹öưÀ» ´­·¶À» ¶§ ¸Þ´º°¡ ³ªÅ¸³ª°ÔÇϴ°ÍÀ» ¿¹·Î µé¾î ¼³¸í.

1) Åø¹Ù¸¦ »ý¼ºÇÑ´Ù. (Create())

2) ¹öư ¿·¿¡ È­»ìÇ¥ ¹öưÀ» »ý¼º½Ã۱â À§ÇØ ´ÙÀ½°ú °°ÀÌ ½ºÅ¸ÀÏÀ» ÁöÁ¤ÇØ ÁØ´Ù.


m_wndToolBar.GetToolBarCtrl().SetExtendedStyle( 

                                               TBSTYLE_EX_DRAWDDARROWS); 

3) ¹öưÀÌ »ý¼º µÇ±æ ¿øÇÏ´Â ¹öưÀÇ ½ºÅ¸Àϵµ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇØ ÁØ´Ù.


DWORD dwStyle = m_wndToolBar.GetButtonStyle( 

                                            m_wndToolBar.CommandToIndex(ID_DROPDOWN)); 

dwStyle |= TBSTYLE_DROPDOWN; 

m_wndToolBar.SetButtonStyle(m_wndToolBar.CommandToIndex   

                            (ID_DROPDOWN), dwStyle); 

4) Arrow¹öưÀ» ´­·¶À» °æ¿ì¿¡ ´ëÇÑ ¸Þ¼¼Áö 󸮸¦ À§ÇØ Mainfr.h¿¡ ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇϰí


afx_msg void OnToolbarDropDown(NMTOOLBAR* pnmh, LRESULT* 

                               plRes); 

MainFrm.cppÀÇ message map¿¡µµ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇØ ÁÖ°í,


ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR,     

          OnToolbarDropDown) 

¸Þ´º¸¦ ¶ç¿ì±â À§ÇØ ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ±¸Çö ÇÑ´Ù.


void CMainFrame::OnToolbarDropDown(NMTOOLBAR* pnmtb, LRESULT 

          *plr) 

{ 

    CWnd *pWnd; 

    UINT nID; 

    

    // Switch on button command id's. 

    switch (pnmtb->iItem) 

    { 

    case ID_DROPDOWN: 

        pWnd = &m_wndToolBar; 

        nID  = IDR_MENU1; 

        break; 

    default: 

        return; 

    } 

    

    // load and display popup menu 

    CMenu menu; 

    menu.LoadMenu(nID); 

    CMenu* pPopup = menu.GetSubMenu(0); 

    ASSERT(pPopup); 

    

    CRect rc; 

    pWnd->SendMessage(TB_GETRECT, pnmtb->iItem, (LPARAM)&rc); 

    pWnd->ClientToScreen(&rc); 

    

    pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON |   

        TPM_VERTICAL, rc.left, rc.bottom, this, &rc); 

} 

ÀÌ·¸°Ô ÇÑ ÈÄ ÇÁ·Î±×·¥À» ½ÇÇà ½ÃÄѺ¸¸é ID_DROPDOWN ID¿¡ ÇØ´çÇÏ´Â ¹öư¿·¿¡ ÀÛÀº È­»ìÇ¥ ¹öưÀÌ ³ªÅ¸³ª°í ±× ¹öưÀ» ´©¸£¸é ID_MENU1 ¸Þ´º°¡ ³ªÅ¸³ª°Ô µÈ´Ù.



- 2001.08.13 Smile Seo -