窗体之间方法调用_发消息方式(三)

一、封装一个类发消息

 public struct My_lParam
    {
        public int i;
        public string s;

    }
    public class Note
    {

        [DllImport("User32.dll", EntryPoint = "SendMessage")]

        private static extern int SendMessage(
        IntPtr hWnd,        // 信息发往的窗口的句柄  
        int Msg,            // 消息ID  
        int wParam,         // 参数1  
        ref My_lParam lParam
        );

      [DllImport("User32.dll", EntryPoint = "FindWindow")]  
  
      private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);


        public const int USER = 0x500;
        public const int MYMESSAGE = USER + 1;


        //向窗体发送消息的函数
        public void SendMsgToMainForm(string strUrlMsg)
        {
            IntPtr ptr = FindWindow(null, "FormMain");
            My_lParam m = new My_lParam();
            m.s = strUrlMsg;
            SendMessage(ptr, MYMESSAGE, 1, ref m);

        }
    } 

二、窗体B调用发消息

 Note note = new Note();
 note.SendMsgToMainForm(strUrlPath);

三、主窗体处理接收消息

  protected override void DefWndProc(ref Message m)
        {

            switch (m.Msg)
            {

                //接收自定义消息MYMESSAGE,并显示其参数  

                case Note.MYMESSAGE:

                    My_lParam ml = new My_lParam();

                    Type t = ml.GetType();

                    ml = (My_lParam)m.GetLParam(t);

                    string strTest =ml.s

                    break;

                default:

                    base.DefWndProc(ref m);

                    break;

            }

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值