VC中CTreeView控件的使用_第1頁
VC中CTreeView控件的使用_第2頁
VC中CTreeView控件的使用_第3頁
VC中CTreeView控件的使用_第4頁
VC中CTreeView控件的使用_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

/VC中CTreeView控件的使用1.清空TreeView里的所有內容,并重新填充剛開始的時候,能用DeleteAllItems()方法把節點都給刪除,但是留下了一片空白,重新添加的內容就看不到了。這個問題郁悶了很久,但思想無非是一樣的,刪除節點,重新填充。偶然間發現別人的代碼里用到了SetRedraw()。哈,問題解決。2.獲取選中節點的文字內容以與獲得當前節點的父節點HTREEITEMhSelectedItem=m_TreeCtrl.GetSelectedItem();

CStringstrSelectedItemText=m_TreeCtrl.GetItemText(hSelectedItem);

HTREEITEMhParentItem=m_TreeCtrl.GetParentItem(hSelectedItem);3.添加一個節點到TreeView控件中TV_ITEMtvItem;

_variant_tvClass;

vClass=m_pRecordset->GetCollect("名稱");

tvItem.mask=TVIF_TEXT|TVIF_PARAM;

CStringtemp;

temp=(char*)_bstr_t(vClass);

tvItem.pszText=(LPTSTR)(LPCTSTR)temp;

TV_INSERTSTRUCTtvInsert;

tvItem.cchTextMax=2;

tvInsert.hParent=TVI_ROOT;//當作根節點

tvInsert.hInsertAfter=TVI_LAST;

tvInsert.item=tvItem;

HTREEITEMhRoot=m_TreeCtrl.InsertItem(&tvInsert);

這段代碼從數據庫中讀取“名稱”字段來填充控件。最值得注意的就是紅色的那句話,這里吧CString的字符串添加到TreeView中需要進行復雜的轉化,CSDN中有篇文章詳細地講述了CString的操作。地址是:這個是英文的這個是中文的對于上面操作的解釋:當你向控件寫數據時,文本指針實際上被當成LPCTSTR,而當你從控件讀數據時,你必須有一個可寫的字符串。這個結構無法區分它是用來讀還是用來寫。因此,你會常常在我的代碼中看到如下的用法:tvi.item.pszText=(LPTSTR)(LPCTSTR)s;它把CString強制類型轉化成LPCTSTR,也就是說先獲得改字符串的地址,然后再強制類型轉化成LPTSTR,以便可以對之進行賦值操作。注意這只有在使用Set或Insert之類的方法才有效!如果你試圖獲取數據,則不能這么做。本文來自CSDN博客,轉載請標明出處:CTreeViewExt是MFC使用者可重用的類,該類由CTreeView派生,可以用在文檔-視結構的應用程序中,并且支持Drag&Drop。

使用者所需要做的僅僅是將文件加到AppWizard產生的工程中,(CTreeView為基類)并且將CTreeView替換為CTreeViewExt。并重載三個VirtualFunction。

(WenYY:這很簡單吧,下面是源代碼,我會在必要的地方加上注釋,但由于原作者并未加,所以如果有出入請原諒,作者定義了三處虛擬函數,其作用是讓使用者重載后,加入自己的判斷條件和結果處理的功能,很巧妙的思想:

CopyItemProperties

IsItemCanBeDroppedOn(HTREEITEMhSource,HTREEITEMhTarget);

BOOLItemCanBeDragged(HTREEITEMhItem);//檢查是否可以對該ITEM實施Drag&Drop

)

Header!defined(AFX_TREEVIEWEXT_H__99D8F6F8_79F0_11D1_8DC6_0000E8125FE5__INCLUDED_)

#defineAFX_TREEVIEWEXT_H__99D8F6F8_79F0_11D1_8DC6_0000E8125FE5__INCLUDED_

#if_MSC_VER>=1000

#pragmaonce

#endif//_MSC_VER>=1000

//TreeViewExt.h:header

/////////////////////////////////////////

//CTreeViewExtview

classCTreeViewExt:publicCTreeView

{

protected:

CTreeViewExt();//protectedconstructorusedbydynamiccreation

DECLARE_DYNCREATE(CTreeViewExt)

//Attributes

public:

//Operations

public:

//Overrides

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CTreeViewExt)

protected:

virtualvoidOnDraw(CDC*pDC);//overriddentodrawthisview

//}}AFX_VIRTUAL

//Implementation

protected:

HTREEITEMm_hDraggedItem;

BOOLm_bDraggingNow;//標記

CImageList*m_pDragImageList;

virtual~CTreeViewExt();

#ifdef_DEBUG

virtualvoidAssertValid()const;

virtualvoidDump(CDumpContext&dc)const;

#endif

//Generatedmessagemapfunctions

protected:

virtualvoidCopyItemProperties(HTREEITEMhNewItem,HTREEITEMhDraggedItem);

virtualBOOLIsItemCanBeDroppedOn(HTREEITEMhSource,HTREEITEMhTarget);

virtualBOOLItemCanBeDragged(HTREEITEMhItem);//檢查是否可以對該ITEM實施Drag&Drop

//{{AFX_MSG(CTreeViewExt)

afx_msgvoidOnBegindrag(NMHDR*pNMHDR,LRESULT*pResult);//必須重載的函數

afx_msgvoidOnMouseMove(UINTnFlags,CPointpoint);

afx_msgvoidOnLButtonUp(UINTnFlags,CPointpoint);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

/////////////////////////////////////////

//{{AFX

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論