Re: Owner Data ListView Ctrl failing to insert column in Vista

"domehead100" <[email protected]>
Newsgroups gmane.comp.windows.wtl
Message-ID <[email protected]>
Sounds like a bug in the common controls on Vista.  You might want to make sure that the service pack is current.

Just a wild guess, but you might try NOT setting LVS_NOCOLUMNHEADER at create time, calling SetColumns(), and then doing your ModifyStyle(0, LVS_NOCOLUMNHEADER, TRUE) after the columns have been set.

I can imagine someone at MS writing code assuming that the header existed and was visible that would fail if it was not.

--- In [email protected], "arasakumaran" <arasakumaran@...> wrote:
>
> I am having a problem with a listview control. It works fine in XP (the development machine), but fails in a Vista machine (where I do not have the development environment).
> 
> It is a report style listview control and is Owner data.  It is an SDI application where the Main window creates the listview. The step to insert column fails in the vista computer. I have included the code where the styles etc. is defined (omitted rest of the class).  Any help is appreciated.
> ..
> 
> typedef CWinTraits<
> WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |LVS_OWNERDATA|
> LVS_REPORT  | LVS_SHAREIMAGELISTS | LVS_NOCOLUMNHEADER,WS_EX_CLIENTEDGE|
> LVS_EX_DOUBLEBUFFER|LVS_EX_FLATSB|LVS_EX_FULLROWSELECT> CMyListViewWinTraits;
> 
> template< class T, class TBase = CListViewCtrl, class TWinTraits = CMyListViewWinTraits >
> class CMyListCtrlT : public CWindowImpl<T, TBase,TWinTraits>
> {
> public:
> 	DECLARE_WND_SUPERCLASS(NULL, TBase::GetWndClassName())
> 	typedef CWindowImpl<T, TBase,TWinTraits> baseClass;
> 	typedef CMyListCtrlT<T, TBase,TWinTraits> thisClass;
> 
> 	CMyListCtrlT(): m_bMiniVersion(false)
> 	{
> 	}
> 	void _Init(bool bMini = false)
> 	{
> 		T* pT = static_cast<T*>(this);
> 		m_bMiniVersion = bMini;
> 		_ASSERTE(pT->GetWindowLong(GWL_STYLE) & LVS_REPORT);
> 		_ASSERTE(pT->GetWindowLong(GWL_STYLE) & LVS_OWNERDATA);
> 		_ASSERTE(pT->GetWindowLong(GWL_STYLE) & LVS_NOCOLUMNHEADER);
> 		pT->SetExtendedListViewStyle(GetExtendedListViewStyle()| LVS_EX_FLATSB | LVS_EX_FULLROWSELECT );
> 		pT->ModifyStyle(0,LVS_NOCOLUMNHEADER,TRUE);
> 		SetColumns();
> 		ATLTRACE(_T("After CNotesListCtrlT::_Init \n"));
> 	}
> 	BOOL SubclassWindow(HWND hWnd)
> 	{
> 		ATLASSERT(m_hWnd==NULL);
> 		ATLASSERT(::IsWindow(hWnd));
> #ifdef _DEBUG
> 		// Check class
> 		TCHAR szBuffer[32] = { 0 };
> 		if( ::GetClassName(hWnd, szBuffer, (sizeof(szBuffer)/sizeof(TCHAR))-1) ) {
> 			ATLASSERT(::lstrcmpi(szBuffer, CListViewCtrl::GetWndClassName()) == 0);
> 		}
> #endif // _DEBUG
> 		BOOL bRet = baseClass::SubclassWindow(hWnd);
> 		if( bRet ) _Init();
> 		return bRet;
> 	}
> 	bool SetColumns()   /// InsertColumn fails in Vista
> 	{
> 		T* pT = static_cast<T*>(this);
> 		if (pT->InsertColumn(0,_T("ID"),LVCFMT_LEFT,20) == -1) return false;
> 		if (pT->InsertColumn(1,_T("Title"),LVCFMT_LEFT,220) == -1) return false;
> 		return true;
> 	}
> };
> class CMyListView : public CMyListCtrlT<CMyListView>
> {
> public:
> 	DECLARE_WND_SUPERCLASS(_T("MyListView"), CListViewCtrl::GetWndClassName())
> 	typedef CMyListCtrlT<CMyListView> baseClass;
> 
> 	BOOL PreTranslateMessage(MSG* pMsg);
> 
> 	BEGIN_MSG_MAP(CMyListView)
> 		CHAIN_MSG_MAP(baseClass)
> 	END_MSG_MAP()
> 
> 
> protected:
> 	CFilterPanelDlg m_panel;
> 
> public:
> 
> };
>




------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/wtl/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/wtl/join
    (Yahoo! ID required)

<*> To change settings via email:
    [email protected] 
    [email protected]

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.