gpt4 book ai didi

c++ - 来自子控件的键盘消息

转载 作者:行者123 更新时间:2023-11-30 01:58:45 25 4
gpt4 key购买 nike

我目前正在开发一个使用 WIN32 API 的用户界面 DLL。 DLL 必须适用于许多平台,XP、WIN CE 等。我已经设法合并停靠、锚定等,但似乎有关于所有者绘制按钮的问题。我可以画出按钮的正确状态,焦点,点击,默认。但是,我无法收到关键通知。我特别想对当前具有焦点的按钮执行单击操作,如果用户按下 enter。

请注意,我使用的是 Windows 消息循环而不是对话框消息循环。我使用 Windows Hook 来 Hook 窗口创建并将用户数据设置为“指向”我的控件实例。如果我在主消息循环中测试 WM_KEYDOWN,我可以获得按钮控件实例的句柄并将消息转发到相关控件。不幸的是,我正在处理大量遗留代码,这可能不是一个理想的解决方案。

所以,我的问题是什么是最好的前进方式。子类化按钮控件的窗口过程是一个可行的选择还是有更简单的方法?

非常感谢。

最佳答案

上面的评论是正确的。具有焦点的按钮应该获取关键消息。但是按钮不会(自己)响应 Enter——它们响应 Space。听起来您缺少的是典型的对话框键盘导航,例如 Tab 键移动焦点和 Enter 激活“默认”按钮。

如果您有一个典型的 Windows 消息泵,并且您希望键盘行为通常与对话框相关联,那么您需要使用 IsDialogMessage消息循环中的 API。这意味着您的窗口本质上是一个“无模式对话框”。

关于c++ - 来自子控件的键盘消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16924868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com