WndProc, как отловить все нажатия кнопок? - PullRequest
1 голос
/ 13 сентября 2011

Я занимаюсь разработкой приложения для устройства .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());
    }
}

Спасибо, Лукас

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Считыватель штрих-кодов обычно ведет себя как обычная клавиатура, поэтому специальные кнопки не нажимаются. Вы просто получаете сообщения о том, что клавиши были нажаты, и после ввода всего кода вы получаете ввод.

0 голосов
/ 13 сентября 2011

Microsoft POS для .NET может быть полезным.

...