【问题标题】:Keyboard Tab not working when cdialog application with CREATE method but working fine with DOMODAL当 cdialog 应用程序使用 CREATE 方法但使用 DOMODAL 工作正常时,键盘选项卡不起作用
【发布时间】:2013-04-24 05:12:02
【问题描述】:

我有一个 MFC 应用程序。有一个按钮。我在 CBUTTON 单击时编写了代码创建 CDialog。如果我使用 DOMODAL 方法创建 cdialog,则键盘选项卡工作正常,但如果我使用 CREATE 方法,则键盘选项卡不起作用。

【问题讨论】:

  • “键盘标签不起作用”是什么意思?什么不起作用?你预计会发生什么?
  • 如果我按 Tab 键,则它不起作用。箭头键上下工作。当按 Tab 键时,它将失去对话框的焦点。

标签: visual-c++ mfc


【解决方案1】:

您可能没有调用IsDialogMessage,这是确保无模式对话框正确处理键盘输入所必需的。

模态对话框(即通过调用DoModal 方法创建的对话框)不需要这样做,因为 Windows 会在内部处理它。

不过,这作为解释没有多大意义,因为您使用的是 MFC,它应该确保在消息循环中为无模式对话框调用 IsDialogMessage。这就是使用框架的全部意义所在:它可以防止您忘记这样的细节。我猜不出为什么它不能像你应该的那样工作;你没有向我们展示任何代码。请注意,Visual Studio 向导会自动为您编写正确的代码。建议您在向应用添加新对话框时使用它们。

Joseph Newcomer 在Creating a Modeless Dialog Box with MFC 上的文章可能对阅读有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多