自定义消息接收问题
从网上找的C#代码,用来学C#自定义消息发送接收,按照网上代码说明做个测试程序,发现接收的时候不能正确接收。=================发送方代码========================
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(
IntPtr hWnd, // 信息发住的窗口的句柄
int Msg, // 消息ID
int wParam, // 参数1
ref SENDDATASTRUCT lParam // 参数2 [MarshalAs(UnmanagedType.LPTStr)]StringBuilder lParam
);
//定义消息常数
public const int USER = 0x500;//在c#中消息需要定义成windows系统中的原始的16进制数字
public const int TEST = USER + 1;
public struct SENDDATASTRUCT
{
public IntPtr dwData; //附加一些个人自定义标志信息,自己喜欢
public int DataLength; //信息的长度
[MarshalAs(UnmanagedType.LPStr)]
public string lpData; //要发送的信息
}
private void button1_Click(object sender, EventArgs e)
{
string myText = textBox1.Text;
byte[] myInfo = System.Text.Encoding.Default.GetBytes(myText);
int len = myInfo.Length;
SENDDATASTRUCT myData;
myData.dwData = (IntPtr)100;
myData.lpData = myText;
myData.DataLength = len + 1;
SendMessage(SendToHandle, TEST, 100, ref myData);//发送自定义消息给句柄为SendToHandle 的窗口,
}
=================接收方代码========================
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
//接收自定义消息MYMESSAGE,并显示其参数
case Note.TEST:
Note.SENDDATASTRUCT myData = new Note.SENDDATASTRUCT();//这是创建自定义信息的结构
Type mytype = myData.GetType();
myData = (Note.SENDDATASTRUCT)m.GetLParam(mytype);//这里获取的就是作为LParam参数发送来的信息的结构
textBox1.Text = myData.lpData; //显示收到的自定义信息
break;
default:
base.WndProc(ref m);
break;
}
}
======================问题===================
接收时代码不能正确执行到case Note.TEST:处?
--------------------编程问答-------------------- --------------------编程问答-------------------- 没人顶,自己定一下!
补充:.NET技术 , C#