CTreeCtrl
От: CooLer Россия http://bestsoft.far.ru
Дата: 12.04.02 14:51
Оценка:
Возникла необходимость создать дерево не в шаблоне диалога, а непосредственно в коде программы. Как положено, вызываю Create, создаю дерево и все вроде работает кроме:
1. Не приходит сообщение TVN_SELCHANGED. Причем, что интересно, NM_CLICK приходит.
2. (менее важно) Как я не устанавливал стиль WS_BORDER появилась только скучная черная рамка, а не рельефная, как хотелось бы.
Кто знает как с этим справиться?
"Выше голову" — сказл палач, надевая петлю
Re: CTreeCtrl
От: Alex Fedotov США  
Дата: 12.04.02 16:25
Оценка:
Здравствуйте CooLer, Вы писали:

CL>Возникла необходимость создать дерево не в шаблоне диалога, а непосредственно в коде программы. Как положено, вызываю Create, создаю дерево и все вроде работает кроме:


CL>1. Не приходит сообщение TVN_SELCHANGED. Причем, что интересно, NM_CLICK приходит.


Проверить еще раз message map entry для TVN_SELCHANGED.

CL>2. (менее важно) Как я не устанавливал стиль WS_BORDER появилась только скучная черная рамка, а не рельефная, как хотелось бы.


Надо поставить расширенный стиль WS_EX_CLIENTEDGE, а WS_BORDER устанавливать не надо.
-- Alex Fedotov
Re: CTreeCtrl
От: Dr_Sh0ck Беларусь  
Дата: 13.04.02 03:21
Оценка:
Здравствуйте CooLer, Вы писали:

CL>Возникла необходимость создать дерево не в шаблоне диалога, а непосредственно в коде программы. Как положено, вызываю Create, создаю дерево и все вроде работает кроме:

CL>1. Не приходит сообщение TVN_SELCHANGED. Причем, что интересно, NM_CLICK приходит.
CL>2. (менее важно) Как я не устанавливал стиль WS_BORDER появилась только скучная черная рамка, а не рельефная, как хотелось бы.
CL>Кто знает как с этим справиться?

Я бы помотрел в RC-файле описание ентого элемента в диалоге (точнее флаги), а затем их бы и использовал в при создании элемента вручную. Естессно после удаления из шаблона диалога элемента.
Do not fake yourself ;)
ICQ#: 198114726
Re: CTreeCtrl
От: Vicont Россия  
Дата: 13.04.02 05:49
Оценка:
Здравствуйте CooLer, Вы писали:

CL>Возникла необходимость создать дерево не в шаблоне диалога, а непосредственно в коде программы. Как положено, вызываю Create, создаю дерево и все вроде работает кроме:

CL>1. Не приходит сообщение TVN_SELCHANGED. Причем, что интересно, NM_CLICK приходит.
CL>2. (менее важно) Как я не устанавливал стиль WS_BORDER появилась только скучная черная рамка, а не рельефная, как хотелось бы.
CL>Кто знает как с этим справиться?

ON_NOTIFY(TVN_SELCHANGED, ID_TREE, OnSelchangedTree)
И все работает.
Re[2]: CTreeCtrl
От: Аноним  
Дата: 13.04.02 08:15
Оценка:
Здравствуйте Vicont, Вы писали:

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


CL>>Возникла необходимость создать дерево не в шаблоне диалога, а непосредственно в коде программы. Как положено, вызываю Create, создаю дерево и все вроде работает кроме:

CL>>1. Не приходит сообщение TVN_SELCHANGED. Причем, что интересно, NM_CLICK приходит.
CL>>2. (менее важно) Как я не устанавливал стиль WS_BORDER появилась только скучная черная рамка, а не рельефная, как хотелось бы.
CL>>Кто знает как с этим справиться?

V>ON_NOTIFY(TVN_SELCHANGED, ID_TREE, OnSelchangedTree)

V>И все работает.

Вы будете смеяться, но я именно так и пишу! Но оно не работает!!! (Может руки кривые?) Однако ON_NOTIFY(NM_CLICK, ID_TREE, OnSelchangedTree) работает
Re[2]: CTreeCtrl
От: CooLer Россия http://bestsoft.far.ru
Дата: 13.04.02 08:30
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

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


CL>>Возникла необходимость создать дерево не в шаблоне диалога, а непосредственно в коде программы. Как положено, вызываю Create, создаю дерево и все вроде работает кроме:


CL>>1. Не приходит сообщение TVN_SELCHANGED. Причем, что интересно, NM_CLICK приходит.


AF>Проверить еще раз message map entry для TVN_SELCHANGED.


Проверил. выглядит так:

ON_NOTIFY(TVN_SELCHANGED, ID_GROUP_TREE, OnSelchangedGroupTree)
ON_NOTIFY(NM_CLICK, ID_GROUP_TREE, OnSelchangedGroupTree)

Одну из строчек я закоментариваю. Если первую — все работает. А если убарть вторую — не фурычит!

CL>>2. (менее важно) Как я не устанавливал стиль WS_BORDER появилась только скучная черная рамка, а не рельефная, как хотелось бы.


AF>Надо поставить расширенный стиль WS_EX_CLIENTEDGE, а WS_BORDER устанавливать не надо.


А как установить расширеный стиль? Пробовал так:

LONG oes = ::GetWindowLong(m_GroupTree.m_hWnd,GWL_EXSTYLE);
::SetWindowLong(m_GroupTree.m_hWnd,GWL_EXSTYLE,oes | WS_EX_CLIENTEDGE);

Не помогает. Рамка пропадает совсем. Даже та, которая была :-(
"Выше голову" — сказл палач, надевая петлю
Re[3]: CTreeCtrl
От: lozzy  
Дата: 13.04.02 09:44
Оценка:
Здравствуйте CooLer, Вы писали:

CL>LONG oes = ::GetWindowLong(m_GroupTree.m_hWnd,GWL_EXSTYLE);

CL>::SetWindowLong(m_GroupTree.m_hWnd,GWL_EXSTYLE,oes | WS_EX_CLIENTEDGE);

CL>Не помогает. Рамка пропадает совсем. Даже та, которая была


А ты в Create этот стиль пропиши, после обычных стилей. И Border выкинь.
Re[3]: CTreeCtrl
От: dm_login  
Дата: 26.08.03 16:45
Оценка:
Здравствуйте, Аноним, Вы писали:

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


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


CL>>>Возникла необходимость создать дерево не в шаблоне диалога, а непосредственно в коде программы. Как положено, вызываю Create, создаю дерево и все вроде работает кроме:

CL>>>1. Не приходит сообщение TVN_SELCHANGED. Причем, что интересно, NM_CLICK приходит.
CL>>>2. (менее важно) Как я не устанавливал стиль WS_BORDER появилась только скучная черная рамка, а не рельефная, как хотелось бы.
CL>>>Кто знает как с этим справиться?

V>>ON_NOTIFY(TVN_SELCHANGED, ID_TREE, OnSelchangedTree)

V>>И все работает.

А>Вы будете смеяться, но я именно так и пишу! Но оно не работает!!! (Может руки кривые?) Однако ON_NOTIFY(NM_CLICK, ID_TREE, OnSelchangedTree) работает


Я тоже долго над этим бился...
Но потом полез в COMMCTRL.H...
И поставил в ON_NOTIFY() не TVN_SELCHANGED, а TVN_SELCHANGEDW и все заработало... Для меня это пока загадка — почему посылается мессага для UNICODE...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.