MFC: CMFCToolBar SetButtonStyle не работает со стилем TBBS_PRESSED?
Есть ли ошибка в контроле? или я что-то не так делаю?
В.чCMFCToolBar m_wndToolBar;
в карте сообщенийON_COMMAND(ID_MYID, &CMainFrame::OnToolBar)
void CMainFrame::OnToolBar()
{
int nIndex = m_wndToolBar.CommandToIndex(ID_MYID);
UINT nState = m_wndToolBar.GetButtonStyle(nIndex);
if(nState & TBBS_PRESSED)
nState &= ~TBBS_PRESSED;
else
nState |= TBBS_PRESSED;
m_wndToolBar.SetButtonStyle(nIndex,nState);
m_wndToolBar.InvalidateButton(nIndex);
}
При нажатии на кнопку мне нужно установить кнопку нажатой, и когда пользователь нажал снова, кнопка стала не нажата.
Ничего не происходит, нажав на кнопку:(
2 ответа
Просто создайте обработчик ON_UPDATE_COMMAND для определенного элемента. Используйте pCmdUI->SetCheck для сигнализации о состоянии вниз или вверх.
MFC никогда не обновляет панели инструментов и меню напрямую. Они просят Framework обновить состояние кнопок и пунктов меню.
Ваше описание указывает, что вы хотите, чтобы кнопка имела "флажок". Если это правильно, убедитесь, что вы указали TBBS_CHECKBOX для стиля кнопки. Вам не нужно вручную обрабатывать визуализацию состояния флажка при каждом нажатии кнопки.