Sos*_*der 1 c++ windows winapi mfc openfiledialog
一段时间以来,我一直在尝试在我的 C++ 应用程序中实现文件对话框,并且我使用本文中描述的代码取得了良好的成功(它是德语,但代码应该是可以理解的):
https://msdn.microsoft.com/de-de/library/windows/desktop/ff485843(v=vs.85).aspx
但是,在我的窗口类(CDialogImpl)中使用此代码,我只是不知道如何使此文件选择器模式化。如果我使用此代码,我可以生成多个文件选择器。
当然,我可以通过添加表示状态的成员变量来跟踪状态,但这仍然无法解决在打开对话框时能够在主窗口中单击的问题。
有什么方法可以让我使这个窗口模式化吗?我一直在尝试扫描所有可用的方法,但我找不到任何东西。我没有找到任何可以在创建时传递的标志,也没有找到任何可以在创建后设置的选项。
任何帮助表示赞赏!
您链接到的示例非常简单,除了文件对话框之外没有任何 UI。您的程序更加复杂,有一个调用文件对话框的窗口。
您需要提供文件对话框的所有者。当您这样做时,所有者被禁用,这是使对话框成为模态的部分原因。未能通过所有者意味着其他窗口未被禁用,因此仍然响应用户输入。
示例代码没有提供所有者,但由于该程序中没有其他窗口,因此这是良性的。模态仅在存在多个窗口时才有意义。
因此,要解决这个问题,请将所有者(窗口的句柄)传递给Show文件对话框的方法。
禁用所有者窗口是模式对话框的关键部分之一。您会发现任何模式对话框的 API 都希望您指定所有者。养成期望提供 ownwr 窗口的习惯,并寻找实现这一点的方法。
| 归档时间: |
|
| 查看次数: |
1326 次 |
| 最近记录: |