【问题标题】:WndProc, how to catch all buttons press?WndProc,如何捕捉所有按钮按下?
【发布时间】:2011-11-16 07:08:57
【问题描述】:

我正在为带有条形码阅读器的 .NET CF3.5 WM6.1 设备开发应用程序,并希望捕获设备上的所有按钮(F1、1、扫描仪按钮)单击。特别是我对如何捕捉条形码按钮感兴趣。我写了一个小应用程序,但我能捕捉到的唯一动作是关闭表单。 有人可以帮我处理这段代码吗?我错过了什么?

public partial class Form1 : Form
{
    MsgHandler m_MsgHandler;
    public Form1()
    {
        InitializeComponent();
        m_MsgHandler = new MsgHandler(this);
    }
    public class MsgHandler : MessageWindow
    {
        public const int WM_CLOSE = 71;
        public const int WM_USER = 0x0400;
        public const int WM_SCANTRIGGER = WM_USER + 702;
        private Form1 m_myForm;

        public MsgHandler(Form1 form)
        {
            m_myForm = form;
        }
        protected override void WndProc(ref Message msg)
        {
            switch (msg.Msg)
            {
                case WM_SCANTRIGGER:
                   this.m_myForm.DoAction1();
                   break;
                case WM_CLOSE:
                   break;
                default:
                    this.m_myForm.DoAction2(msg.WParam.ToInt32());
                    break;
            }
        }
    }
    public void DoAction1()
    {
        MessageBox.Show("Scann btn pressed!");
    }
    public void DoAction2(int button)
    {
        MessageBox.Show(button.ToString());
    }
}

谢谢, 卢卡斯

【问题讨论】:

  • 你从哪里得到这个WM_USER + 702
  • 在设备条码示例中,无法正常工作
  • 如果示例不起作用,请拨打移动设备的支持电话。

标签: c# winforms windows-mobile wndproc .net-cf-3.5


【解决方案1】:

条码阅读器的行为通常与普通键盘一样,因此无需按下特殊按钮。您只会收到按键被按下的消息,并且在您输入整个代码之后。

【讨论】:

  • 好的,但问题是我没有收到任何消息。我认为如果按下任何按钮,我应该执行 DoAction2() 方法。任何想法为什么会这样?
【解决方案2】:

Microsoft POS for .NET 可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多