【发布时间】:2018-10-05 05:01:14
【问题描述】:
我的场景如下:
- 我有一个 CDialog 类,其中包含两个 EditBox 控件,假设它是 IDC_EB1 和 IDC_EB2。
- 我希望能够在 IDC_EB1 和 IDC_EB2 上监听双击事件以打开 FileDialog 并在 IDC_EB1 和 IDC_EB1 上显示选定的文件位置。
- IDC_EB1 和IDC_EB2 是通过DDX Control 机制做的,并存储到各自的成员变量中。
- 为了处理双击事件,成员变量类型是 CMyEdit(派生自 CEdit)。
对话框运行,当我双击 IDC_EB1 或 IDC_EB2 进行浏览时,我能够打开一个 FileDialog。问题出在 CMyEdit 内部,我不再知道哪个 EditBox 触发了双击事件以显示从 FileDialog 中选择的文件路径。
解决这个问题的好方法是什么?我正在运行 Visual Studio 2010 SP1。
PS:有一个 MfcEditBrowse 控件可以很好地解决上述问题,但它不符合我的需要,因为计划是在我的程序的各个阶段重用这个 CDialog 窗口,显然你不能多次调用 DoModal具有 MfcEditBrowse 控件的对话框。该对话框中的 MfcEditBrowse 控件将引发断言失败(显然根据我在 Microsoft 文档中找到的已知问题)。
【问题讨论】:
-
“显然你不能多次调用 DoModal” 这不是真的。模态对话框暂时禁用父对话框,直到它关闭,你可以一次又一次地调用它。
-
“显然根据我在 Microsoft 文档中找到的已知问题” - 请提供链接作为参考。