15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Problem with CTreeCtrl

H. Mike Hu -- hhu@viewlogic.com
Monday, December 30, 1996

Environment: VC++ 4.2-flat, NT 4.0

When I use CTreeCtrl and try to figure out which item
is the current focus (I have multiple selections), I
find out from the online help that I can use TVIS_FOCUSED
bit to do the job. Unfortunately, I can not find the
declaration of TVIS_FOCUSED in VC++ 4.2-flat include files.

By the way, TVIS_FOCUSED was in VC++ 2.2:

#define TVIS_FOCUSED            0x0001

I used this value with VC4.2 tree view control and it
just didn't work.

Does anyone here have idea on this? And any work around?

Thanks,

Mike



Thomas Schall -- schall@csv.ica.uni-stuttgart.de
Thursday, January 02, 1997

Hi Mike,

I had the same problem. Just use the method CTreeCtrl::GetSelectedItem()
to figure which item is selected (focused). The hell knows what has been
changed.
Add the #define-statement of TVIS_FOCUSED to the include file. You can
query for
the focused item by this flag, too. A problem seems to occur when you use
multi selection. Therefore I use the method I mentioned above. Maybe MS has
forgotten to add the definition?!?

    Multi selection needs other tricks to get things working right. Have
you had the nice effect when having multiple items selected and your
control is hidden and reactivated again? Selected items in the hidden area
appear grey. The control only updates the last focused item correctly. I
used a simple Invalidate() of the control when the window is de-/activated.

Thomas



H. Mike Hu -- hhu@viewlogic.com
Friday, January 03, 1997

Thomas,

Thanks for your help. As Katy Mulvey at  pointed out,
VC++ 4.2b patch fixed the TVIS_FOCUSED definition problem.

After I upgraded from 4.2-flat to 4.2b, CTreeCtrl::GetSelectedItem()
is the only way I can use to get current focused item. And you are
right about using Invalidate() to display selected items correctly
when the control is not in focus. I can not find any other way to
achieve this.

Mike




| Вернуться в корень Архива |