当前位置:编程学习 > C#/ASP.NET >>

重写WndProc后,如何避免当当当的声音

因为一些需求关系,我需要在WM_CHAR的消息中修改当前输入的字符(可能转成多个字符),所以要手动设置控件的Text而不是让Windows消息自动设置。 在最后我把WParam设置成IntPrt.Zero是让该消息输入控制。

现在问题是手动设置Text已实现,但每次敲打键盘都会有当当当的声音。如果解决这个问题?

case WM_CHAR:
    // set text manually
    ...
    sender.Text = "test";
    
    // need set to Zero here since we set the text manually before
    m.WParam = IntPtr.Zero;
--------------------编程问答-------------------- 问题在于你的WndProc是怎么写的? 让我看看 --------------------编程问答--------------------
引用 1 楼 healer_kx 的回复:
问题在于你的WndProc是怎么写的? 让我看看

我顶楼贴着了,逻辑就是这样:手动设置控件的text,最后把m.WParam设成IntPtr.Zero。开始的一些业务逻辑和控件和消息都没关系,只是得到需要手动设置的text。谢谢! --------------------编程问答-------------------- 将Form的KeyPreview属性设为true,然后再override ProcessCmdKey方法,仅供参考

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (msg.HWnd == textBox1.Handle)
            {
                int vk = msg.WParam.ToInt32();

                msg.WParam = new IntPtr(vk + 1);
            }

            return base.ProcessCmdKey(ref msg, keyData);
        }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,