Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Исчезновение кнопок на ToolBar


Автор: elom 7.12.2006, 19:03
Доброго времени суток, уважаемые господа програмисты smile

Ситуация выглядит следующим образом :

Есть окно с панелью инструментов ToolBar и есть дерево. При выборе разных узлов дерева включаються или выключаються определенные кнопки на панели (изменяем значение Enabled). Размеры окна можно менять и при этом заданы минимальные значения размеров. Когда окно развернуто на весь экран все идет нормально , но как только мы сжимаем екран до минимума кнопки на панели инструментов на какое-то время исчезают, а потом вновь появляются, при выборе разных узлов дерева.

Вопрос: почему ,ведь мы не трогаем свойство Visual ?
Подскажите как это убрать.

Заранее благодарен smile  

Автор: elom 12.12.2006, 10:39
Доброго всем времени суток

Дальнейшее исследование проблемы показало что при изменении узла дерева некоторые елементы становятся невидимы и наверное идет сбой в перерисовке окна и кнопки исчезают . Если  в програме принудительно задать перерисовку окна кнопки появляються.
И еще одно на форме есть Spliter . Так вот если его переместить когда после того как начинаються эти ошибки то все приходит в норму.
Да и еще одно при появлении проблемы с кнопками при изменении размеров окна кнопки и другие елементы начинают мигать.

Подскажите как временно заблокировать перерисовку окна. Может кто-то подскажет где можно почитать про процес отображения окон , перерисовку и тому подобное и как это все реализовано в BuilderC++ 6.0  

Автор: pandrew 12.12.2006, 13:14
Цитата(elom @  12.12.2006,  10:39 Найти цитируемый пост)
Подскажите как временно заблокировать перерисовку окна.

блокировка:
SendMessage(Handle,WM_SETREDRAW,FALSE,0); надо не забыть ее снять
Вся инфа есть в справке, в исходных кодах (SOURCE), MSDN и книжках. Обычно кривизна отрисовки связана с некорректными флагами дочерних окон по отношению к родительскому либо с потерей сообщений WM_PAINT из-за перегруженности потока сообщений. Достаточно грамотно воткнуть InvalidateRect.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)