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);
}

При нажатии на кнопку мне нужно установить кнопку нажатой, и когда пользователь нажал снова, кнопка стала не нажата.

Ничего не происходит, нажав на кнопку 🙁

0

Решение

Просто создайте обработчик ON_UPDATE_COMMAND для определенного элемента.
Используйте pCmdUI-> SetCheck для сигнализации о состоянии вниз или вверх.

MFC никогда не обновляет панели инструментов и меню напрямую. Они просят Framework обновить состояние кнопок и пунктов меню.

0

Другие решения

Ваше описание указывает, что вы хотите, чтобы кнопка имела «флажок». Если это правильно, убедитесь, что вы указали TBBS_CHECKBOX для стиля кнопки. Вам не нужно вручную обрабатывать визуализацию состояния флажка при каждом нажатии кнопки.

0