首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#(API)Sendmessage参数有关问题

2013-07-21 
C#(API)Sendmessage参数问题方法SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)中第一个参

C#(API)Sendmessage参数问题
方法SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)中
第一个参数:控件句柄hWnd已知,
第二个参数:WM_LBUTTONDOWN
第三个参数:MK_LBUTTON 
问题是最后一个参数,
若已知int型坐标X,Y,通过移位之类的运算怎样转化成lParam?

[解决办法]

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, int lParam);

        protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x0201)
            {
                int xPos = m.LParam.ToInt32() & 0xFFFF;
                int yPos = (m.LParam.ToInt32()) >> 16;

                Text = xPos.ToString() + "  " + yPos.ToString();
            }
            base.WndProc(ref m);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Point p = new Point(101, 201);
            int point = p.X + (p.Y << 16); 
            SendMessage(this.Handle, 0x0201, IntPtr.Zero, point);
        }

热点排行