gpt4 book ai didi

c++ - Windows CE下单行EDIT控件按ENTER键时如何关闭提示音?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:46 25 4
gpt4 key购买 nike

我正在开发一个针对 POCKET PC 2003 (Windows CE 4.2) 设备的应用程序,它使用 C++ 和 native WINAPI(即没有 MFC 等)。在其中我有一个单行编辑控制主窗口的哪一部分(不是对话框);因此,当按下 ENTER 时,Windows 的正常行为是除了嘟嘟声什么都不做。

我使用以下代码将编辑控件的窗口过程子类化以覆盖默认行为:


LRESULT CALLBACK Gui::ItemIdInputProc( HWND hwnd, UINT message, WPARAM wParam,
LPARAM lParam ) {

switch ( message ) {
case WM_KEYDOWN :
switch ( wParam ) {
case VK_RETURN :
addNewItem();
return 0;
}
}

return CallWindowProc( oldItemIdInputProc_, hwnd, message, wParam, lParam );
}

这会导致与按下“确定”按钮等效的行为。

现在解决手头的问题:此窗口过程不会覆盖发出哔声的默认行为。我怀疑必须有一些其他消息或消息在按下 ENTER 时触发,但我未能捕获;我只是不知道是哪个。我真的很想阻止设备发出哔哔声,因为它会扰乱发生元素碰撞时在某些情况下播放的其他声音,并且提醒用户这一点至关重要。

提前致谢。

最佳答案

在将所有 消息输出到日志文件后,我终于设法弄清楚是哪条消息引起了蜂鸣声 - WM_CHAR 设置了 wParamVK_RETURN。停止将该消息转发到编辑控件会停止哔哔声。 ^^

现在的最终代码如下:


LRESULT CALLBACK Gui::ItemIdInputProc( HWND hwnd, UINT message, WPARAM wParam,
LPARAM lParam ) {

switch ( message ) {
case WM_CHAR :
switch ( wParam ) {
case VK_RETURN :
addNewItem();
return 0;
}
}

return CallWindowProc( oldItemIdInputProc_, hwnd, message, wParam, lParam );
}

关于c++ - Windows CE下单行EDIT控件按ENTER键时如何关闭提示音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3588526/

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