【发布时间】:2013-01-01 09:40:26
【问题描述】:
我正在尝试创建一个简单的 MFC 文件夹浏览器并在 MSDN 和此处寻找答案: 到目前为止,这是我的代码:
void CAddFilterDlg::OnBnClickedAddDll()
{
CFileDialog dlg(TRUE/*bOpenFileDialog*/, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT , NULL, NULL, 0, TRUE/*bVistaStyle*/);
CString folderPath = dlg.GetFolderPath();
IFileOpenDialog * openDlg = dlg.GetIFileOpenDialog();
if ( openDlg != NULL )
{
openDlg->SetOptions(FOS_PICKFOLDERS);
openDlg->Release();
}
dlg.DoModal();
}
我遇到的错误是:
- 不允许指向不完整类类型的指针(这是用于 openDlg)
- 标识符“FOS_PICKFOLDERS”未定义
我正在开发 Visual Studio 2010,win7
【问题讨论】:
-
openDlgPtr 在哪里?我在代码 sn-p 中看不到。 “FOS_PICKFOLDERS”在 ShObjIdl.h 中定义,确保包含它
-
我会修复这个抱歉的 openDlg 而不是 openDlgPtr。我添加了#include "ShObjIdl.h" 它仍然无法识别
-
您没有正确设置目标窗口版本 (_WIN32_WINNT) 宏。 IFileOpenDialog 仅在 0x600 及更高版本中可用。
-
您的项目构建是否为 Vista 定义的?您使用的是什么版本的 SDK?
标签: visual-c++ mfc