- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的主窗口是一个用 CreateDialogParam() 创建的无模式对话框,我需要使用加速器。我应该在调用 TranslateAccelerator() 之前调用 IsDialogMessage() 还是相反?这 2 项中哪一项是正确的,为什么?
if(!IsDialogMessage(hDlg, &msg))
{
if(!TranslateAccelerator(hDlg, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
或
if(!TranslateAccelerator(hDlg, hAccel, &msg))
{
if(!IsDialogMessage(hDlg, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
最佳答案
线程是旧的,但如果有人会搜索相同的问题,这是我的看法:
出于某种原因我需要 IsDialogMessage()。然而,当根据“经典”我将 TranslateAccelerator() 放在第二个位置时,它完全禁用了我所有的加速器,如 F1 等。不幸的是,我无法解开这个谜团(坦率地说,我尝试的不够努力;需要进行特殊测试……)相反,我打算尝试子类化,这样我就可以完全摆脱 IsDialogMessage。但后来我决定交换电话,瞧,一切都开始正常工作了!
因此,您可以将 TranslateAccelerator() 放在 IsDialogMessage() 之前,只要确保它不会阻塞重要的击键即可。
但主要问题仍未得到解答:“为什么在首先调用 IsDialogMessage() 时加速器不起作用?”
关于winapi - 我应该在 TranslateAccelerator() 之前调用 IsDialogMessage(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29276275/
我实现了一个 AxWebBrowser 控件,并将 IDocHostUIHandler 添加到我的文档中,用于自定义上下文菜单的导航。 经过研究我发现我必须 throw new System.Runt
我的主窗口是一个用 CreateDialogParam() 创建的无模式对话框,我需要使用加速器。我应该在调用 TranslateAccelerator() 之前调用 IsDialogMessage(
我是一名优秀的程序员,十分优秀!