我正在尝试从我的Flutter(Win32)应用程序中删除Windows错误声音。经过一些研究,我想出了这个fix。我尝试了这个修复,但它对我的Flutter应用程序没有帮助。
下面是处理WM_SYSCHAR
消息的代码:
LRESULT CALLBACK Win32Window::WndProc(HWND const window,
UINT const message,
WPARAM const wparam,
LPARAM const lparam) noexcept {
if (message == WM_SYSCHAR) {
std::cout << "SYSCHAR from win32" << std::endl;
return 0;
}
...
}
当我按下Alt+Space键时,控制台会显示“SYSCHAR from win32”。但每当我按下Alt键时,控制台不会显示此消息,而是播放Windows错误声音。看起来SYSCHAR
消息在其他地方处理?
This可用于了解Flutter中Win32应用程序的工作和初始化。
我只是想告诉应用程序,Alt+键组合得到处理,它不必播放Windows错误声音。
1条答案
按热度按时间oknrviil1#
感谢@IInspectable建议我使用keyboard accelerators。
问题是Flutter的主循环没有键盘快捷键,所以我参考了如何使用键盘快捷键的文档,对主循环做了如下修改:
1.已通过调用CreateAcceleratorTable创建快捷键表
下面是
GenerateAccels
函数:1.然后在主循环中添加对TranslateAccelerator的调用
1.我还添加了此检查,以防止在按下Alt后按下任何键时播放错误声音(Alt未被按住)。
flutter_window.cpp