c++ - 如何获取选定的 TreeView 项目文本

标签 c++ winapi

我正在使用 WINAPI Treeview 来显示一些数据。 当我选择一个 TV ITEM 时,我必须得到选定的 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 显示一些特殊字符(键盘上没有)

谁能帮帮我,如何获取选中的项目文本。 提前致谢

最佳答案

您是否阅读了有关 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 为您分配和管理字符串?它只是没有发生。

关于c++ - 如何获取选定的 TreeView 项目文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10780015/

相关文章:

c - 设置客户区大小(创建后)?

c++ - 获取 CLSID key 问题

c++ - 如何查询文件上所有锁持有者的窗口

c++ - 使用OpenGL渲染具有大量顶点的填充多边形

c++ - boost .Asio : Async operations timeout

c++ - 程序接收信号 SIGILL,非法指令

android - 发现多个文件的操作系统独立路径为 'lib/x86/libusb.so'

delphi - 如何关闭ie8标签页

c++ - COM - 实现 DllGetClassObject

c++ - 我如何最好地消除有关未使用变量的警告?