Попробуйте позвонить toolbar.SendMessage(TB_AUTOSIZE);
после HideButton ();
Я бы порекомендовал показать / скрыть эти кнопки не в OnUpdateCommandUI, а в других местах, поскольку они встречаются слишком часто и могут вызвать мерцание. Хотя не MFC у меня есть аналогичный код, который работает:
void HideToolbarButton(HWND toolbar, UINT command_id)
{
TBBUTTONINFO tbinfo;
tbinfo.cbSize = sizeof(tbinfo);
tbinfo.dwMask = TBIF_STATE;
tbinfo.state = TBSTATE_HIDDEN;
SendMessage(toolbar, TB_SETBUTTONINFO, command_id, (LPARAM)&tbinfo );
}