|
From: PRMARJORAM on 14 May 2008 11:01 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); } 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?
From: M. Shoaib Surya on 14 May 2008 11:10 You should call ModifyStyle() member function of CTreeCtrl to set the style. The following line of code should achieve your purpose. tree.ModifyStyle(NULL, TVS_HASLINES |TVS_LINESATROOT); Regards, Shoaib. "PRMARJORAM" <PRMARJORAM(a)discussions.microsoft.com> wrote in message news:7A2A351F-F074-48AA-8D67-B0EFC1C2A298(a)microsoft.com... > 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); > } > > 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? > > > > >
From: M. Shoaib Surya on 14 May 2008 11:18 Also, the call to the OnInitialUpdate() of the base class, that is, the following line of code, CTreeView::OnInitialUpdate(); should be the last line of the overridden CMyTreeView::OnInitialUpdate() instead of the first line - Shoaib "M. Shoaib Surya" <shoaibsurya(a)hotmail.com> wrote in message news:OYueoWdtIHA.4560(a)TK2MSFTNGP03.phx.gbl... > You should call ModifyStyle() member function of CTreeCtrl to set the > style. The following line of code should achieve your purpose. > > tree.ModifyStyle(NULL, TVS_HASLINES |TVS_LINESATROOT); > > Regards, > Shoaib. > > "PRMARJORAM" <PRMARJORAM(a)discussions.microsoft.com> wrote in message > news:7A2A351F-F074-48AA-8D67-B0EFC1C2A298(a)microsoft.com... >> 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); >> } >> >> 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? >> >> >> >> >> > >
From: Joseph M. Newcomer on 14 May 2008 12:42 See below... On Wed, 14 May 2008 08:01:02 -0700, PRMARJORAM <PRMARJORAM(a)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(a)flounder.com Web: http://www.flounder.com MVP Tips: http://www.flounder.com/mvp_tips.htm
From: PRMARJORAM on 14 May 2008 13:40 Exactly, i was looking for a method something like SetStyle, then looking at the msdn documentation for using CTreeCtrl, stated had to use SetWindowLong I could not believe they had left something so fundamental out of the class interface, they had not... "Joseph M. Newcomer" wrote: > See below... > On Wed, 14 May 2008 08:01:02 -0700, PRMARJORAM <PRMARJORAM(a)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(a)flounder.com > Web: http://www.flounder.com > MVP Tips: http://www.flounder.com/mvp_tips.htm >
|
Next
|
Last
Pages: 1 2 Prev: Getting IDispatch ptr calling Invoke(…) Next: Merkwürdigkeit bei VC 2005 |