我正在使用WINAPI Treeview来显示一些数据。 当我选择电视项目时,我必须获取所选的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显示某种特殊字符(那些不在键盘中)
任何人都可以帮助我,如何获取所选项目文本。 提前致谢
答案 0 :(得分: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
P.S。如果您正在使用Windows API,您经常看到Windows为您分配和管理字符串吗?它不会发生。