2012-05-28 49 views
2

我正在使用WINAPI樹視圖來顯示一些數據。 當我選擇一個電視項目時,我必須得到選定的TV_ITEM文本。 我使用下面的代碼如何獲取所選樹視圖項目文本

case WM_NOTIFY: 
switch(((LPNMHDR)lParam)->code) 
{ 
case TVN_SELCHANGED: 
    { 
     NMTREEVIEW* pnmtv = (LPNMTREEVIEW)lParam; 
     LPTSTR str = (pnmtv->itemNew.pszText); 
     MessageBox(hWnd, str,"load",MB_OK); 
    } 
    break;       
} 

我不能得到正確的值,我得到了某種垃圾的價值。 MessageBox顯示某種特殊字符(那些不在鍵盤中)

任何人都可以幫助我,如何獲取選定的項目文本。 在此先感謝

回答

2

您是否閱讀過TVN_SELCHANGED上的文檔?它從來沒有提到pszText。您需要

TVITEM item; 
item.hItem = pnmtv->itemNew.hItem; 
item.mask = TVIF_TEXT; 
item.pszText = // allocate buffer 
item.cchTextMax = // length of buffer 
::SendMessage(hWnd, TVM_GETITEM, 0, (LPARAM)&item); 

,然後你會得到item.pszText

附:如果您正在使用Windows API,您多久見過一次Windows爲您分配和管理字符串?它只是不會發生。

相關問題