当前位置:编程学习 > C#/ASP.NET >>

自定义消息接收问题

从网上找的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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,