Hi All !!!
У CheckBox'a есть propertie CheckState, которое может быть равным Indeterminate (the check box displays a check mark and is shaded).
Задача: необходимо в контролe TreeView, c включённым propertie CheckBoxes, отобразить оные со статусом Indeterminate.
У меня загвоздка — не могу добраться до этих CheckBox'ов, более того, есть подозрение, что кому-то было лень их туда вставлять и в дереве отображаются вообще имиджи (до которых кстати тоже пока не получилось добраться).
Может у кого-то есть неплохие идеи?
22.03.04 15:26: Перенесено модератором из '.NET' — TK
Здравствуйте, SubZero2000, Вы писали:
SZ>У меня загвоздка — не могу добраться до этих CheckBox'ов, более того, есть подозрение, что кому-то было лень их туда вставлять и в дереве
Именно так. Это — не реальный контрол System.Windows.Forms.CheckBox а всего лишь картинка из ресурсного файла виндов. Эти псевдо-чек-боксы можно всего лишь проверить на факт выбора/не выбора их пользователем — TreeNode.Checked.
Здравствуйте, Smarty, Вы писали:
S>Именно так. Это — не реальный контрол System.Windows.Forms.CheckBox а всего лишь картинка из ресурсного файла виндов. Эти псевдо-чек-боксы можно всего лишь проверить на факт выбора/не выбора их пользователем — TreeNode.Checked.
Thanks. Да я как бы догадался...
Но меня, если честно, больше интересуют способы решения поставленной задачи.
Может есть хоть какие-нибудь идеи?
Здравствуйте, SubZero2000, Вы писали:
SZ>Может у кого-то есть неплохие идеи?
WinAPI + интероп в зубы и вперед. Надо послать (SendMessage) в окно treeview сообщение TVM_SETITEM. Копай туда.
Здравствуйте, SubZero2000, Вы писали:
O>>WinAPI + интероп в зубы и вперед. Надо послать (SendMessage) в окно treeview сообщение TVM_SETITEM. Копай туда.
SZ>Сам пробывал или только думаешь, что может получиться?
Не пробовал, а делал. Там и пробовать-то нечего.
SZ>А то связка из первых двух слов меня не очень радует .
Это довольно просто, если не лезть сильно глубоко. Заодно и разберешься, если не знаешь.
Здравствуйте, orangy, Вы писали:
O>Здравствуйте, SubZero2000, Вы писали:
O>>>WinAPI + интероп в зубы и вперед. Надо послать (SendMessage) в окно treeview сообщение TVM_SETITEM. Копай туда.
SZ>>Сам пробывал или только думаешь, что может получиться? O>Не пробовал, а делал. Там и пробовать-то нечего.
SZ>>А то связка из первых двух слов меня не очень радует . O>Это довольно просто, если не лезть сильно глубоко. Заодно и разберешься, если не знаешь.
Получилось, правда пока немного коряво: загрузить картинку удалось только с помощью
LoadImage(...), да и то только с атрибутом LR_LOADFROMFILE, а хотелось бы из ресурсов. Но это для
другого форума. А в остальном — песня.
Спасибо.
Вообще-то нехороший осадок остался после решения этой проблемы.
Можно было бы посмотреть сколько статусов у чекбоксов
и реализовать их все, как для TreeView, так и для ListView.
То ли это невнимание, то ли просто лень, меня честно говоря не интересует — просто неприятно.
Да, выложу код Win32 dll может кому-нибудь понадобится: