Как принудительно обновить пользовательский интерфейс панели инструментов? Пробовал вызовом AfxGetApp()->OnIdle(0), но ничего не происходит, хотя она вроде (смотря на исходники MFC)рассылает сообщение на обновление интерфейса. Обновление интерфейса происходит только когда, например, сдвинешь мышку.
Здравствуйте Valentin, вы писали:
V>Как принудительно обновить пользовательский интерфейс панели инструментов? Пробовал вызовом
Для этого нужно класс-визардом создать обработчик UPDATE_COMMAND_UI. Когда потребуется обновить вид панели инструментов, каркас приложения сам вызовет этот обработчик. Вроде бы так ;)
Здравствуйте BigBob, вы писали:
BB>Здравствуйте Valentin, вы писали:
V>>Как принудительно обновить пользовательский интерфейс панели инструментов? Пробовал вызовом BB>Для этого нужно класс-визардом создать обработчик UPDATE_COMMAND_UI. Когда потребуется обновить вид панели инструментов, каркас приложения сам вызовет этот обработчик. Вроде бы так ;)
Дело в том, что как я писал в своем вопросе, мне нужно принудительно обновить тулбар. Обработчик на UPDATE_COMMAND_UI у меня есть. Просто у меня на фоне работает поток, в котором нужно в конце его тела обновить тулбар, а каркас приложения автоматически его обновляет например на движение мыши. Так как мне быть? Что вызвать? Не двигать же мне мышкой, чтобы его обновить ;))
Здравствуйте Sasparella, вы писали:
S>Вызовите RecalcLayout();
Я пробовал вызывать ((CFrameWnd*)AfxGetMainWnd())->RecalcLayout();
но интерфейс не обновляется (сообщение UPDATE_COMMAND_UI не приходит). А если двинуть мышкой, то приходит.
V>но интерфейс не обновляется (сообщение UPDATE_COMMAND_UI не приходит). А если двинуть мышкой, то приходит.
Имхо из потока можно посылать свое сообщение (нампример WM_USER + 10), а в обработчике этого сообщения вызвать Invalidate() для нужной панели иснтрументов.