我试图调用CFileDialog以允许用户选择文件。

我的程序是MFC应用程序,正在使用VS2005。

这是我的问题:

我有一个主 View ,可创建一个无模式对话框。在此对话框中,我有一个菜单项,可以进行简单的CFileDialog调用:

CFileDialog dlgFile(true);
dlgFile.DoModal();

但是该程序始终卡在DoModal上。该程序不响应命令,任务管理器表示已停止响应。

其他有趣的信息:
  • 仅在Windows 8和Windows 7计算机上才观察到这种情况。
  • 我使用相同的基本 View ->无模式对话框-> CFileDialog方案创建了一个新项目,并且效果很好。
  • 当我调用MessageBox时,它出现在对话框的后面(我必须先按alt才能将其显示在前面),但是程序仍在响应。
  • 如果我在主 View 中进行了相同的CFileDialog调用,它将弹出而没有任何问题。
  • 与此相关或不相关的另一个烦人的问题:当CFileDialog调用正在运行时(在Win 7上),在浏览窗口中选择“计算机”将显示空白的白屏(其他一切正常)。

  • 我可以找到的最接近的问题是:Why does CFileDialog::DoModal() Hang?
    但是,我不使用线程(至少95%的人确定我不使用线程,这不只是我的项目)。我的项目会自动进行线程化吗?如果是这样,我如何确保这不会引起我的问​​题?

    最佳答案

    我在VS2008中有同样的问题。
    尝试将CFileDialog构造函数(bVistaStyle)中的最后一个参数设置为false

    关于c++ - 从无模式对话框启动时,CFileDialog卡住,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29640257/

    10-12 20:43