byIs есть ошибка в контроле? или я делаю что-то неправильно?
В.h 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 для стиля кнопки. Вам не нужно вручную обрабатывать отображение состояния флажка при каждом нажатии кнопки.