Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Além dos botões padrão, uma barra de ferramentas também pode ter botões dropdown. Um botão suspenso geralmente é indicado pela presença de uma seta para baixo anexada.
Observação
A seta para baixo anexada aparecerá somente se o TBSTYLE_EX_DRAWDDARROWS estilo estendido tiver sido definido.
Quando o usuário clica nessa seta (ou no próprio botão, se nenhuma seta estiver presente), uma mensagem de notificação de TBN_DROPDOWN é enviada para o pai do controle da barra de ferramentas. Em seguida, você pode lidar com essa notificação e exibir um menu pop-up; semelhante ao comportamento do Internet Explorer.
O procedimento a seguir ilustra como implementar um botão da barra de ferramentas suspensa com um menu pop-up:
Para implementar um botão de menu suspenso
Depois que o
CToolBarCtrlobjeto tiver sido criado, defina o estilo TBSTYLE_EX_DRAWDDARROWS, usando o seguinte código:m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);Defina o estilo TBSTYLE_DROPDOWN para quaisquer botões novos (InsertButton ou AddButtons) ou existentes (SetButtonInfo) que serão botões suspensos. O exemplo a seguir demonstra a modificação de um botão existente em um
CToolBarCtrlobjeto:TBBUTTONINFO tbi; tbi.dwMask = TBIF_STYLE; tbi.cbSize = sizeof(TBBUTTONINFO); m_ToolBarCtrl.GetButtonInfo(0, &tbi); tbi.fsStyle |= TBSTYLE_DROPDOWN; m_ToolBarCtrl.SetButtonInfo(0, &tbi);Adicione um manipulador de TBN_DROPDOWN à classe pai do objeto da barra de ferramentas.
ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)No novo manipulador, exiba o menu pop-up apropriado. O código a seguir demonstra um método:
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; }