using System; using System.Collections.Generic; using System.Text; using Microsoft.WindowsCE.Forms; namespace SmartDeviceProject1 { //MessageWindow 类提供发送和接收基于 Windows 的消息的能力。 public class MsgWindow : MessageWindow { public const int WM_CUSTOMMSG = 0x0400; Form1 form ; public MsgWindow(Form1 form) { this.form = form; } //重写默认的 WndProc 行为来监视特定的窗口消息 //可以使用 Message 类生成消息。 //可以只接收您使用 MessageWindow 生成的或由本机控件生成的基于 Windows 的消息。 protected override void WndProc(ref Message m) { switch(m.Msg) { case WM_CUSTOMMSG: form.ShowMessage((int)m.WParam,(int)m.LParam); break; } base.WndProc(ref m); } } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.WindowsCE.Forms; namespace SmartDeviceProject1 { /// <summary> /// 此示例让窗体将有关当前鼠标位置的 x-y 坐标的基于 Windows 的消息发送到消息窗口,消息窗口调用窗体上的回调方法在标题栏中显示相应的坐标。 /// </summary> public partial class Form1 : Form { MsgWindow msgWindow; public Form1() { InitializeComponent(); this.msgWindow = new MsgWindow(this); } //在重写的 OnMouseMove 方法中生成基于 Windows 的消息。 //每次移动鼠标或点击鼠标时,此方法都会生成一条基于 Windows 的消息,其中包含传递给 WParam 参数和 LParam 参数的 X 和 Y 鼠标坐标值。 protected override void OnMouseMove(MouseEventArgs e) { //创建Message结构,以包装Windows发送的消息 Message msg = Message.Create(msgWindow.Hwnd,//消息发送至该句柄 MsgWindow.WM_CUSTOMMSG,//消息ID (IntPtr)e.X,//消息 WParam 字段 (IntPtr)e.Y);//消息 LParm 字段 //向消息窗口发送一条消息,并一直等到 WndProc 方法处理此消息。 MessageWindow.SendMessage(ref msg); base.OnMouseDown(e); } public void ShowMessage(int x, int y) { this.Text = "X=" + x.ToString() + " Y=" + y.ToString(); } } } 例摘自MSDN。