MFC: скрытие кнопки панели инструментов - PullRequest
0 голосов
/ 15 сентября 2010

В настоящее время я отключаю определенные кнопки, обрабатывая ON_UPDATE_COMMAND_UI и вызывая ->Enable( TRUE / FALSE ).

Каков наилучший способ полностью скрыть кнопку вместо этого?

Я пытался использовать HideButton, и это делает изображение кнопки невидимым, но оно по-прежнему занимает место, поэтому между видимыми кнопками есть пустая область.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2015

Если вы хотите скрыть определенную кнопку панели инструментов, используйте этот код.

m_wndToolBar.GetToolBarCtrl().HideButton(ID_TOOLBAR1,TRUE);

здесь m_wndToolBar - это объект панели инструментов.ID_TOOLBAR1 - это кнопка, которую вы хотите скрыть этой кнопкой.

0 голосов
/ 15 сентября 2010

Попробуйте позвонить 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 );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...