doppeltes drücken auf Treeview Item?
-
Hi,
gibt es ne möglichkeit herauszufinden wann der benutzer doppelt auf ein TreeView-Item klickt? Ich meine jetzt nicht TVN_ITEMEXPANDED! Habe schon versucht mit TVN_KEYDOWN aber das klappt nicht!
MfG schirrmie
-
jo; ist ein wenig komplizierter
case WM_NOTIFY: { LPNMHDR lpnmhdr = (LPNMHDR)lparam; if(lpnmhdr->idFrom == IDC_TREEVIEW && lpnmhdr->code == NM_DBLCLK) { HTREEITEM htitem = NULL; TVHITTESTINFO ht = {0}; DWORD msgpos = GetMessagePos(); ht.pt.x = GET_X_LPARAM(msgpos); ht.pt.y = GET_Y_LPARAM(msgpos); MapWindowPoints(HWND_DESKTOP, lpnmhdr->hwndFrom, &ht.pt, 1); htitem = TreeView_HitTest(lpnmhdr->hwndFrom, &ht); if(htitem != NULL) { //arbeite mit htitem } } } break;
-
Danke scheint zu funktionieren.
Kannst du mir evtl. noch sagen wie ich mit HTREEITEM htitem = NULL; arbeiten kann? Ich bräuchte ja eine TVITEM tvi; struktur?
MfG schirrmie
-
mit TreeView_GetItem
-
Noch mal ich,
Also ich komm noch nicht ganz klar. Ich kann ja TreeView_GetItem(hwndTreeView, htitem); aufrufen aber dann hab ich doch immernoch keine TVITEM struktur? Oder seh ich jetzt garnicht mehr durch?
MfG schirrmie
-
Jooop jetzt hab ichs schon klar eigentlich ganz einfach wenn es noch interessiert.
if(htitem != NULL) { tvi.mask = TVIF_HANDLE | TVIF_TEXT; tvi.hItem = htitem; tvi.pszText = buf; tvi.cchTextMax = 255; TreeView_GetItem(hwndTreeView, &tvi); MessageBox(NULL, tvi.pszText, "Nachricht", MB_OK); }MfG schirrmie
-
if(htitem != NULL) { //arbeite mit htitem TVITEM tvitem; char text[512+1] = {0}; memset(&tvitem, 0, sizeof(tvitem)); tvitem.mask = TVIF_HANDLE | TVIF_TEXT; tvitem.pszText = text; tvitem.cchTextMax = sizeof(text)-1; tvitem.hItem = htitem; TreeView_GetItem(lpnmhdr->hwndFrom, &tvitem); MessageBox(0, text, text, 0); }für alles andere schau dir einfach mal die Doku zu TreeView_GetItem an. [msdn]TreeView_GetItem[/msdn]
-
if (htitem!=NULL)
bedeutet doch: wenn item (egal welches?) getroffen wurde gehe in die schleife?
if(htitem != NULL) { //arbeite mit htitem TVITEM tvitem; char text[512+1] = {0}; memset(&tvitem, 0, sizeof(tvitem)); tvitem.mask = TVIF_HANDLE | TVIF_TEXT; tvitem.pszText = text; tvitem.cchTextMax = sizeof(text)-1; tvitem.hItem = htitem; TreeView_GetItem(lpnmhdr->hwndFrom, &tvitem); MessageBox(0, text, text, 0); }wo wird denn hier der Name (bzw. String) vom (angeklickten) Item in das array "text" geschrieben?
ich möchte nämlich ein stringarray ausgeben mit anderem inhalt das global definiert ist und verstehe den code nicht ganz.
tvitem.pszText = text;
das versteh ich auch nicht ganzkann mir das bitte jemand erklären