




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
/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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025項目部安全培訓考試試題答案考試直接用
- 2025年廠里安全培訓考試試題答案考試直接用
- 2025工廠員工安全培訓考試試題及完整答案【易錯題】
- 開封二測數學試卷及答案
- 智能會議系統在科技研發中的應用措施
- 有機栽培技術研究-全面剖析
- 2025年護士長年度工作報告范文
- 密鑰協商算法優化-全面剖析
- 線上線下融合的市場細分-全面剖析
- 珠寶行業商業模式-全面剖析
- 育嬰行業前景及就業前景
- 2024年美容師考試理論回顧試題及答案
- Unit5Whatwereyoudoingwhentherainstormcame?SectionB1a-1d課件人教版八年級英語下冊
- 2025年中鐵快運股份有限公司招聘(98人)筆試參考題庫附帶答案詳解
- GB/T 45255-2025公共信用綜合評價規范
- 老舊城市燃氣管道更新改造工程設計方案
- 中醫經典臨證思維與實踐知到課后答案智慧樹章節測試答案2025年春浙江中醫藥大學
- 動火和受限空間作業監護人考試題有答案
- 《高頻電子技術》5振幅調制解調與混頻電路
- 老年肺炎臨床診斷與治療專家共識解讀(2025年)解讀課件
- 制藥廢水處理工藝
評論
0/150
提交評論