Here's another example - going the long way round. 

Code:
CASE %WM_NOTIFY lpNmh = CBLPARAM SELECT CASE @lpNmh.idFrom CASE %TRV_SYSTREEVIEW32_1 hTreeView = @lpNmh.hwndFrom ' <* TreeView handle IF @lpNmh.Code = %NM_CLICK THEN LOCAL ht AS TV_HITTESTINFO LOCAL dwpos AS DWORD LOCAL iTmp AS INTEGER dwpos = GetMessagePos() ' Cursor Pos at time of click in screen coords iTmp = LO(WORD, dwpos) ' "MAKEPOINT" better for multiple monitors? ht.pt.x = iTmp iTmp = HI(WORD, dwpos) ht.pt.y = iTmp MapWindowPoints(%HWND_DESKTOP, hTreeView, ht.pt, 1) ' Map to position in ListView control CALL TreeView_HitTest(hTreeView, ht) ' test that position, on item text? IF ht.flags = %TVHT_ONITEMLABEL THEN hTreeItem = ht.hItem END IF TreeView_SelectItem hTreeView, 0 ' stimulate %TVN_SELCHANGED msg END IF ' (if rqd - for second click of selected item) IF @lpNmh.code = %TVN_SELCHANGED THEN LOCAL lpTV AS NM_TREEVIEW PTR lpTV = CBLPARAM SELECT CASE @lpTV.action ' what action caused selection change? CASE %TVC_BYMOUSE DIALOG SET TEXT CBHNDL, TVGetText(hTreeView, hTreeItem) +" By Click "+ TIME$ CASE %TVC_BYKEYBOARD hTreeItem = Treeview_GetSelection(hTreeView) DIALOG SET TEXT CBHNDL, TVGetText(hTreeView, hTreeItem) +" By Key "+ TIME$ CASE ELSE DIALOG SET TEXT CBHNDL, TVGetText(hTreeView, hTreeItem) +" Unknown "+ TIME$ END SELECT END IF END SELECT
Comment