如何在 CTreeCtrl 上實現雙擊開啟文檔

要怎麼實現在 CTreeCtrl 上雙擊時打開檔案的功能呢

首先就是雙擊時要有反應

在來就是把檔案路徑傳給開啟文檔的函式

步驟和 如何在 CTreeCtrl 上添加右鍵選單 雷同

也是三個步驟就完成喔

 

[實作過程]

1. 首先在 .h 檔中定義雙擊消息函數:

protected:
	afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);

2. 然后在 .cpp 檔的消息循環中定義消息對應關係:

ON_NOTIFY(NM_DBLCLK, IDC_MYTREECTRL, CMainFrame::OnDblClkTree)

3. 接著定義消息函數內容:

void CMainFrame::OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HTREEITEM hSelectItem = m_wndTree.GetSelectedItem();

	// 在 如何為 CTreeCtrl 的每一個 item 設定各自的資料 中已設定好檔案的路徑
	CTreeItemData* pStore = (CTreeItemData*) m_wndTree.GetItemData(hSelectItem);
	CString hFullPath = pStore->getFullPath();

	// 呼叫 MFC 中開啟文檔的函式
 	AfxGetApp()->OpenDocumentFile(hFullPath);
	*pResult = 0;
}

如此一來就可以在雙擊 CTreeCtrl 的檔案時開啟文檔囉!!

 

[參考資料]

1. VC轻松实现CTreeCtrl控件双击响应

2. CWinApp::OpenDocumentFile