도구 모음 컨트롤에서 드롭다운 단추 사용
표준 푸시 단추 외에도 도구 모음에는 드롭다운 단추가 있을 수 있습니다. 드롭다운 단추는 일반적으로 연결된 아래쪽 화살표의 존재로 표시됩니다.
참고 항목
연결된 아래쪽 화살표는 TBSTYLE_EX_DRAWDDARROWS 확장 스타일이 설정된 경우에만 표시됩니다.
사용자가 이 화살표(또는 단추 자체, 화살표가 없는 경우)를 클릭하면 TBN_DROPDOWN 알림 메시지가 도구 모음 컨트롤의 부모로 전송됩니다. 그러면 이 알림을 처리하고 팝업 메뉴를 표시할 수 있습니다. Internet Explorer의 동작과 유사합니다.
다음 절차에서는 팝업 메뉴를 사용하여 드롭다운 도구 모음 단추를 구현하는 방법을 보여 줍니다.
드롭다운 단추를 구현하려면
CToolBarCtrl
개체가 만들어지면 다음 코드를 사용하여 TBSTYLE_EX_DRAWDDARROWS 스타일을 설정합니다.m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
드롭다운 단추가 될 새 단추(InsertButton 또는 AddButtons) 또는 기존(SetButtonInfo) 단추의 TBSTYLE_DROPDOWN 스타일을 설정합니다. 다음 예제에서는 개체의 기존 단추를 수정하는 방법을
CToolBarCtrl
보여 줍니다.TBBUTTONINFO tbi; tbi.dwMask = TBIF_STYLE; tbi.cbSize = sizeof(TBBUTTONINFO); m_ToolBarCtrl.GetButtonInfo(0, &tbi); tbi.fsStyle |= TBSTYLE_DROPDOWN; m_ToolBarCtrl.SetButtonInfo(0, &tbi);
도구 모음 개체의 부모 클래스에 TBN_DROPDOWN 처리기를 추가합니다.
ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)
새 처리기에서 적절한 팝업 메뉴를 표시합니다. 다음 코드는 한 가지 방법을 보여 줍니다.
void CMyDialog::OnTbnDropDownToolBar1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMTOOLBAR pToolBar = reinterpret_cast<LPNMTOOLBAR>(pNMHDR); ClientToScreen(&(pToolBar->rcButton)); // TrackPopupMenu uses screen coords CMenu menu; VERIFY(menu.LoadMenu(IDR_MENU1)); CMenu *pPopup = menu.GetSubMenu(0); if (NULL != pPopup) { pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pToolBar->rcButton.left, pToolBar->rcButton.bottom, this); } *pResult = 0; }