Есть ли ошибка в контроле? или я что-то не так делаю?
В .ч
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);
}
При нажатии на кнопку мне нужно установить кнопку нажатой, и когда пользователь нажал снова, кнопка стала не нажата.
Ничего не происходит, нажав на кнопку 🙁
Просто создайте обработчик ON_UPDATE_COMMAND для определенного элемента.
Используйте pCmdUI-> SetCheck для сигнализации о состоянии вниз или вверх.
MFC никогда не обновляет панели инструментов и меню напрямую. Они просят Framework обновить состояние кнопок и пунктов меню.
Ваше описание указывает, что вы хотите, чтобы кнопка имела «флажок». Если это правильно, убедитесь, что вы указали TBBS_CHECKBOX для стиля кнопки. Вам не нужно вручную обрабатывать визуализацию состояния флажка при каждом нажатии кнопки.