CTreeCtrl: No visual feedback
Fredrik Gunne -- fge@ada.agema.se
Wednesday, January 10, 1996
This is my situation:
One overriden CTreeCtrl called CBrowseCtrl.
In CBrowseCtrl::Init // called after the control is created:
{
HTREEITEM hSelect = FillTreeCtrl(); // Builds the tree control
// and returns item to be selected
Select(hSelect);
}
The calls seems to succed, since the tree is expanded so that hSelect is visible.
But there is nothing else that shows me that the item has been selected, i.e.
the text of that item is not inverted.
Since I've also overridden OnChildNotify, I notice that I do get the TVN_SELCHANGED
message.
I think I've seen this beeing discussed here before, but I can't remember what
the solution was.
Any ideas?
Fredrik
Ken Freeman -- kfreeman@viewlogic.com
Thursday, January 11, 1996
Fredrik Gunne wrote:
>
> This is my situation:
>
> One overriden CTreeCtrl called CBrowseCtrl.
>
> In CBrowseCtrl::Init // called after the control is created:
> {
> HTREEITEM hSelect = FillTreeCtrl(); // Builds the tree control
> // and returns item to be selected
> Select(hSelect);
> }
>
> The calls seems to succed, since the tree is expanded so that hSelect is visible.
> But there is nothing else that shows me that the item has been selected, i.e.
> the text of that item is not inverted.
>
> Since I've also overridden OnChildNotify, I notice that I do get the TVN_SELCHANGED
> message.
>
> I think I've seen this beeing discussed here before, but I can't remember what
> the solution was.
>
> Any ideas?
> Fredrik
Try creating the control with TVS_SHOWSELALWAYS style.
Ken
Melson Employee -- jwallenf@interaccess.com
Monday, January 15, 1996
[Mini-digest: 2 responses]
At 10:34 AM 1/11/96 -0500, you wrote:
>Fredrik Gunne wrote:
>>
>> This is my situation:
>>
>> One overriden CTreeCtrl called CBrowseCtrl.
>>
>> In CBrowseCtrl::Init // called after the control is created:
>> {
>> HTREEITEM hSelect = FillTreeCtrl(); // Builds the tree control
>> // and returns item to be selected
>> Select(hSelect);
>> }
>>
>> The calls seems to succed, since the tree is expanded so that hSelect is
visible.
>> But there is nothing else that shows me that the item has been selected, i.e.
>> the text of that item is not inverted.
>>
>> Since I've also overridden OnChildNotify, I notice that I do get the
TVN_SELCHANGED
>> message.
>>
>> I think I've seen this beeing discussed here before, but I can't remember
what
>> the solution was.
>>
>> Any ideas?
>> Fredrik
>
>Try creating the control with TVS_SHOWSELALWAYS style.
>
>Ken
>
>
If you like, change the Select() call to CTreeCtrl::SetItemState(hSelect,
TRUE, TVIS_SELECTED) [check the flag value please] and force the selection
state.
Jason
John A. King
jking @interaccess.com
"Remember, Arthur, that evil is bad and good.....isn't!" - The Tick
-----From: nitink@sherpa.com
I think that the solution is to use the method "CTreeCtrl::SelectItem"
instead of "CTreeCtrl::Select" in your code fragment below. [Unless,
of course, you have your own overridden method called Select.]
In MFC 4, the "CTreeCtrl::Select" method takes two parameters,
HTREEITEM and a UINT that indicates the type of action to be taken;
whereas the SelectItem method takes only the HTREEITEM, and does
exactly what I think you had in mind in your code.
I have used SelectItem in a Tree Control that I have, without any
problems.
Also, the TVS_SHOWSELALWAYS style causes a selected item to remain
selected when the tree-view control loses focus; but normal selection
should work even without it.
Nitin Karandikar
| Вернуться в корень Архива
|