Здравствуйте, ZealPack, Вы писали:
ZP>VS2008, 2010.
В MSDN в статье про стили для TVS_CHECKBOXES есть фраза
If you want to use this style, you must set the TVS_CHECKBOXES style with SetWindowLong after you create the treeview control, and before you populate the tree. Otherwise, the checkboxes might appear unchecked, depending on timing issues.
Какие-то timing issues ...
Можно половить TVN_ITEMCHANGED и посмотреть, кто и когда меняет состояние айтема (сбрасывает check).
Имею скафандр — готов путешествовать!
Re[2]: Странное поведение CTreeViewCtrl и SetCheckState
Стиль TVS_CHECKBOXES стоит. Но на всяк случай сделал ещё раз SetWindowLong, перед populate — один хрен, не помогло. Судя по всему, эти timing issues и влияют на то, что они начинают заполняться через 200мс.
Re[3]: Странное поведение CTreeViewCtrl и SetCheckState
Здравствуйте, ZealPack, Вы писали:
ZP>Судя по всему, эти timing issues и влияют на то, что они начинают заполняться через 200мс.
Тут, скорее, не в миллисекундах дело, а в последовательности сообщений контролу. Попробуй установить check state с помощью PostMessage, дабы сие действо произошло уже после полной инициализации и контрола и диалога.
Re: Странное поведение CTreeViewCtrl и SetCheckState
Здравствуйте, ZealPack, Вы писали:
ZP>VS2008, 2010. ZP>то итем выбирается. Почему итем не выбирается из OnInitDialog?
Там по ходу по таймеру в очередь кидаются времязатратные операции, т.к. лист всё-таки может быть гигантских размеров, что возможно может привести к блокировкам GUI при синхронном заполнении.
Гдё-то видел пример как обработчик проверяет заполненность очереди на события для листа и если там есть какие-то стороннии эвенты, то кидает в очередь свой эвент и после ловит его и опять проверяет очередь. И только после того как очередь обработалась листом делает свои изменения. Это всё вроде как нужно, чтобы отcлеживать изменения на листе и не встревать со своими изменениями если предыдущие не завершились, если он ещё в состоянии апдейта находится, как-то так.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]