コード例 #1
0
        // 子窗口用户句柄
        public IntPtr WndMsgProcChildClient(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
        {
            IntPtr newPtr;

            try
            {
                IntPtr intPtr = GridNumberForm.CallWindowProc(m_hWndChildClientProcOld, hWnd, msg, wParam, lParam);
                if (msg <= 32)
                {
                    //2---窗口被销毁
                    if (msg == 2)
                    {
                        // GWL_WNDPROC// -4	// 为窗口设定一个新的处理函数。
                        GridNumberForm.SetWindowLong(m_hWndChildClientHandle, -4, m_hWndChildClientProcOld);
                        m_hWndChildClientProcNew = null;
                        base.Hide();
                    }
                }
                //512移动鼠标
                else if (msg != 512)
                {
                    switch (msg)
                    {
                    //519按下鼠标中键
                    case 519:
                        m_midButtonDown = true;
                        break;

                    //520释放鼠标中键
                    case 520:
                        m_midButtonDown = false;
                        //MessageBox.Show("释放中键!");
                        break;

                    //521双击鼠标中键
                    case 521:
                    //522中键转动(滚轮)
                    case 522:
                        DrawGridNumText(false);
                        break;
                    }
                }
                else if (m_midButtonDown)
                {
                    DrawGridNumText(false);
                }
                newPtr = intPtr;
            }
            catch (Exception)
            {
                newPtr = IntPtr.Zero;
            }
            return(newPtr);
        }
コード例 #2
0
        //子窗口句柄
        public IntPtr WndMsgProcChild(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
        {
            IntPtr result;

            try
            {
                //CallWindowProc是将消息信息传送给指定的窗口过程的函数。
                IntPtr intPtr = GridNumberForm.CallWindowProc(m_hWndChildProcOld, hWnd, msg, wParam, lParam);
                //2---窗口被销毁
                if (msg != 2)
                {
                    //5---窗口改变大小
                    if (msg != 5)
                    {
                        switch (msg)
                        {
                        //532调整窗口大小
                        //534移动窗口,通过此消息应用程序可以监视窗口大小和位置也可以修改他们
                        case 532:
                        case 534:
                            DrawGridNumText(false);
                            break;
                        }
                    }
                    else
                    {
                        /*MessageBox.Show("窗口大小改变");*/
                        DrawGridNumText(false);
                    }
                }
                else
                {
                    GridNumberForm.SetWindowLong(m_hWndChildHandle, -4, m_hWndChildProcOld);
                    m_hWndChildProcNew = null;
                    base.Hide();
                }
                result = intPtr;
            }
            catch (Exception)
            {
                result = IntPtr.Zero;
            }
            return(result);
        }