Re[13]: Отсутствие перерисовки в CTreeView. MFC bug?
От: Carc Россия http://www.amlpages.com/home.php
Дата: 26.11.08 16:09
Оценка:
Здравствуйте, Hex65, Вы писали:

H>Здравствуйте, Carc, Вы писали:


C>>Ох...

C>>CMatrixTreeView::OnSelectCommand...
C>>какое-то оконное сообщение обрабатывает? Что это за мистическая "активация окна"?

H>это прилетает постмессадж посланный из MainFrame перед самым выходом из OnTreeMatrix() — создание CView — моего CSpltterWnd с вложенным CTreeView.


H>ON_COMMAND(ID_MATRIX, OnTreeMatrix);


H>Попробую избавиться от этого .

Та не! Ни то!
Я как бы типа догадывался что всё это WM_COMMAND сообщение — но оно откуда то берется? Меню, кнопка, сами шлете? Откуда!
Хочеться понять, что если есть PostMessage, то как то он образуется. Вопрос когда? На каком действии пользователя? Ну я не знаю, к примеру, потеря фокуса CView, какой-нить WM_MOUSEMOVE — т.е. по большому счету должно быть некоторое событие от пользователя (пошел в другой вид), и отсюда вся цепочка (тоже к примеру) WM_KILLFOCUS а там PostMessage(WM_COMMAND) и.т.д.
Полагаю что проблема именно в этом самом событии изначальном. Ну или вариант руками отрисоваться (SetWindowPos+SWP_NOSIZE|SWP_NOMOVE|SWP_FRAMECHANGED) или те же RedrawWindow.
Или надо смотреть в код, какая то странная проблема — дерево "дергается" явно не в тот момент, когда должно "дергаться" настоящее (true) по попу дерявянное и неслабо написанное дерево. Из постов выше скадывается ощущение какой-то архитектурной "неловкости" — что-то вдруг всё выкладывается, то вдруг обратно закладывается... Ну да про архитектуру "горе-советников" много, поэтому и не стоит заморачиваться. Но ощущение, что проявляется она именно в том, что не нужный момент дерево сворачивается\разворачиватся...
Вот собственно начальный момент какой? PostMessage это всё следствия — это нюансы, не в них дело!
Aml Pages Home
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.