interface, they had not...
"Joseph M. Newcomer" wrote:
See below...
On Wed, 14 May 2008 08:01:02 -0700, PRMARJORAM <PRMARJORAM@discussions.microsoft.com>
wrote:
Im using a MFC CTreeView which fits nicely with what im trying to do. I need
to change the style of the nested CTreeCtrl.
There is no easy way to do this, the documentation points to using
SetWindowLong.
void CMyTreeView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
CTreeCtrl& tree = GetTreeCtrl();
HTREEITEM root_item = tree.InsertItem(CString("MyProject"));
HTREEITEM init_request = tree.InsertItem(CString("Item 1"), root_item);
HTREEITEM doc_package = tree.InsertItem(CString("Item 2"), root_item);
ASSERT(tree.GetSafeHwnd() != NULL );
::SetWindowLong(tree.GetSafeHwnd(),GWL_STYLE,TVS_HASLINES |TVS_LINESATROOT);
****
(a) this is not good style for setting styles. You have cleared ALL the style bits,
EXCEPT the two you set. At the VERY MINIMUM this code should say
DWORD style = tree.GetStyle();
style |= TVS_HASLINES | TVS_LINESATROOT;
::SetWindowLong(tree.GetSafeHwnd(), GWL_STYLE, style);
but why go through all that work? Instead, just call
tree.ModifyStyle(0, TVS_HASLINES | TVS_LINESATROOT);
which should be sufficient (no need to get the old style, etc.)
joe
****
}
Iv tried using this to set the styles as in the above code, but the program
gets corrupted.
How can i set the style of a CTreeCtrl nested in a CTreeView?
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm