ToolTips in CTreeCtrl, wie geht das ?

Hi,
hab das ganze mal anders gelöst.

In die abgeleitete Classe von CDialog:
Code:
CToolTipCtrl ToolTip;

In die OnInitDialog():
Code:
CRect rect;

// Beispiel Eingaben	
HTREEITEM s1=m_Tree.InsertItem("Hallo1");
HTREEITEM s2=m_Tree.InsertItem("Hallo2");
m_Tree.InsertItem("Hallo2/Hallo",s2);
HTREEITEM s3=m_Tree.InsertItem("Hallo3");
	
	
m_Tree.GetClientRect(&rect);
MapDialogRect(&rect);
	
ToolTip.Create(&m_Tree,TVS_NOTOOLTIPS);
	
int i=2000;
HTREEITEM ptr=m_Tree.GetFirstVisibleItem();
	
while(ptr!=NULL) {
	m_Tree.GetItemRect(ptr,&rect,TRUE);
	ToolTip.AddTool(&m_Tree,m_Tree.GetItemText(ptr),&rect,i++);
	ptr=m_Tree.GetNextVisibleItem(ptr);
}

m_Tree.SetToolTips(&ToolTip);

return TRUE;

Message von CTreeCtrl => TVN_ITEMEXPANDED:
Code:
void CDlgToolTipDlg::OnItemexpandedTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
	int i=2000;
	CRect rect;
	
	HTREEITEM ptr=m_Tree.GetFirstVisibleItem();
	while(ptr!=NULL) {
		m_Tree.GetItemRect(ptr,&rect,TRUE);
		ToolTip.AddTool(&m_Tree,m_Tree.GetItemText(ptr),&rect,i++);
		ptr=m_Tree.GetNextVisibleItem(ptr);
	}
	*pResult = 0;
}

Message von CTreeCtrl => TVN_ITEMEXPANDING:
Code:
void CDlgToolTipDlg::OnItemexpandingTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
	int i=2000;
	CRect rect;
	
	HTREEITEM ptr=m_Tree.GetFirstVisibleItem();
	while(ptr!=NULL) {
		ToolTip.DelTool(&m_Tree,i++);
		ptr=m_Tree.GetNextVisibleItem(ptr);
	}
	*pResult = 0;
}

Das geht soweit, muss jetzt nur noch ne neue InsertItem-Funktion schreiben.
Das andere ist mir zu hoch.
Bin zwar bis zur erstellung der BOOL CDlgTreeDlg::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult ) Funktion gekommen, doch wie ich brauchbare werte aus NMHDR bekommen soll ist mir schleierhaft.
Naja, ich dank euch trotzdem.

Wenn noch jemand lust hat mir das ganze noch mal ganz einfach mit etwas Quellcode zu erklären, würde mich freuen.
Bye
 
Diese NMHDR ist ein Standard-Struct, dass bei OnNotify-Nachrichten immer versendet wird. Man muss dann immer je nach Code auf ein anderes Struct casten. Warum die das bei OnToolTipNotify nicht direkt eingebaut haben, weiss-der-Geier (achselzuck).

In OnToolTipNotify würde das in etwa so aussehen:

NMTTDISPINFO* pDingenskirchen = (NMTTDISPINFO*)pNMHDR;

In dem Struct gibt es dann ein lpszText-Member, das man auf seinen Text zeigen lassen darf. Im Struct gibts auch noch ein paar andere Sachen, unter anderem die ID des gefragten Tools (bzw. rechteckigen Ausschnittes, der vertooltipt werden soll). Im Grossen und Ganzen umständlich quadrat.
 
Zurück