在网上查了资料,wince中,c#的from不能直接处理消息,但是可以通过重载MessageWindow基类的WinProc方法,来处理收到的消息。
下面的代码,是在扫描条码的时候用到的,还有点问题。
激光头扫描条码成功后,会发出WM_SCAN消息,窗体可以通过这个消息来获取条码,在CGC600Msg构造函数中指定获取消息的窗体,在窗体中定义 gcMsg = new CGC600Msg(this);就可以扫描条码,CGC600Msg会获取到这个消息。但是没搞清楚如何获取条码,以后有机会再研究一下。
- using System;
- using System.Collections.Generic;
- using System.Text;
- using Microsoft.WindowsCE.Forms;
- using System.Windows.Forms;
- namespace GC600Test
- {
- public class CGC600Msg: MessageWindow
- {
- private System.Windows.Forms.Form msgForm=null;
- public const int WM_SCAN = 0x500;
- public CGC600Msg( System.Windows.Forms.Form Form )
- {
- this.msgForm = Form;
- }
- protected override void WndProc(ref Message m)
- {
- switch( m.Msg )
- {
- case WM_SCAN:
- MessageBox.Show(m.LParam.ToString());
- MessageBox.Show(m.WParam.ToString());
- MessageBox.Show(m.ToString());
- break;
- default:
- base.WndProc(ref m);
- break;
- }
- }
- }
- }