我在一个对话框程序中产生一个“打开文件”对话框,在选择文件,并点击“打开”按钮后,在程序中调用getfolderpath不能成功,总是出现该死的非法访问错误。查了一下CSDN,说是需要以OFN_EXPLORER风格打开,可是又说OPEN对话框的默认风格就是OFN_EXPLORER型的。我手工加上该风格仍是不行。请大家帮忙!
源码:
// TODO: Add your control notification handler code here
CString Filter= "所有文件(*.*)|*.*|";
CMyFileDialog FileDlg (TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_EXPLORER, Filter);
if( FileDlg.DoModal() == IDOK )
{
UpdateData(true);
CString m_edit1 = FileDlg.GetPathName();
Cstring m_edit3 = FileDlg.GetFolderPath();//错误出现在该行
UpdateData(false);
}
源码:
// TODO: Add your control notification handler code here
CString Filter= "所有文件(*.*)|*.*|";
CMyFileDialog FileDlg (TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_EXPLORER, Filter);
if( FileDlg.DoModal() == IDOK )
{
UpdateData(true);
CString m_edit1 = FileDlg.GetPathName();
Cstring m_edit3 = FileDlg.GetFolderPath();//错误出现在该行
UpdateData(false);
}
解决方案 »
- 如何扫描MAC与局域网IP扫描并替换
- 用Windows Media Encoder SDK开发的软件的鼠标双击问题
- 如何在文件夹浏览对话框中只显示映射文件夹
- 能否给我解释以下两个函数的作用
- 菜鸟问题——我生成cdaorecordset为什么没有析构函数?
- 运行DEBUG程序的时候出现的问题~!~!
- 为何子窗口的内容超出了窗口边界?
- 关于:PeekMessage(&message, NULL, 0, 0, PM_REMOVE)
- array<int> ^intArray={10,20,30}
- 怎么把输入的A转化为4啊
- 如何将一个CString转换成IStream?
- 斑竹是谁啊,一个问题问了那么久,都没人回呢???
CString GetFolderPath() const; // return full path以下为源码
CString CFileDialog::GetFolderPath() const
{
ASSERT(::IsWindow(m_hWnd));
ASSERT(m_ofn.Flags & OFN_EXPLORER); CString strResult;
if (GetParent()->SendMessage(CDM_GETFOLDERPATH, (WPARAM)MAX_PATH, (LPARAM)strResult.GetBuffer(MAX_PATH)) < 0)
strResult.Empty();
else
strResult.ReleaseBuffer();
return strResult;
}点击OK后对话框已经关闭了,所以ASSERT(::IsWindow(m_hWnd));出错你可以用GetFilePath()和GetFileName()来组合路径