// 子窗口用户句柄 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); }
//子窗口句柄 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); }