gpt4 book ai didi

c++ - 如何获取CTreeCtrl中选中项的文件类型?文件扩展名可能被隐藏,因此 GetItemText 没有帮助

转载 作者:行者123 更新时间:2023-11-28 00:21:05 25 4
gpt4 key购买 nike

我正在接管一个用 MFC 构建的旧项目。我对 MFC 一点都不熟悉,但我需要为这个项目添加一些新功能。

程序中有一个树状列表,显示您计算机上的文件。双击一个项目,相应的文件将被导入到项目中。起初,我使用以下代码来获取选定的文件名:

HTREEITEM hSelectItem = m_wndTree.GetSelectedItem();
CString filename = m_wndTree.GetItemText(hSelectItem);

但后来,这个方法在别人的电脑上失败了,因为他们可能会检查隐藏文件扩展名,所以名为“Arial.ttf”的文件将返回“Arial”。

获得所选项目的完整路径的最佳方式是什么?继承 CTreeCtrl 并覆盖一些功能可能是一个选择,但不熟悉 MFC 会花费我很多时间并且会弄脏手。有没有我可以使用的 API 或第三方库?

此外,我实际使用的类是 CMFCShellTreeCtrl,它有一个公共(public)方法 GetItemPath,但是它有一个错误,所以我不能使用这个方法来获取完整路径。

谢谢!

最佳答案

如果你说的是this bug ,它早在 2010 年就已修复,所以我想应该从 MSVC 2012 开始解决它。如果您需要使用 MSVC 2010,那么您可能会考虑覆盖原始的 CMFCShellTreeCtrl 并将有问题的 GetItemPath 替换为您可以轻松从当前编译器版本中获取的当前实现.

关于c++ - 如何获取CTreeCtrl中选中项的文件类型?文件扩展名可能被隐藏,因此 GetItemText 没有帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27417889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com