public System.IntPtr WndProcCallback(System.IntPtr hWnd, int msg, System.IntPtr wParam, System.IntPtr lParam) { OnWindowMessageParams msgParams = new OnWindowMessageParams(); msgParams.hWnd = hWnd; msgParams.msg = msg; msgParams.wParam = wParam; msgParams.lParam = lParam; switch (msg) { case WM_CREATE: m_BackgroundWorker.ReportProgress(31, msgParams); break; case WM_INPUT: m_BackgroundWorker.ReportProgress(32, msgParams); break; case WM_CLOSE: m_BackgroundWorker.ReportProgress(33, msgParams); PostQuitMessage(m_exitCode); //0) if (!m_BackgroundWorker.CancellationPending) { m_BackgroundWorker.CancelAsync(); } break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return(System.IntPtr.Zero); }
private void m_BackgroundWorker_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) { if (((e.UserState != null))) { int iRet = e.ProgressPercentage; if ((object.ReferenceEquals(e.UserState.GetType(), typeof(MSG)))) { m_messageCount += 1; MSG msg = (MSG)e.UserState; if ((((OnNativeGetMessage != null)) && (OnNativeGetMessage.GetInvocationList().Length > 0))) { RaiseEventUtility.RaiseEventAndExecuteItInTheTargetThread(OnNativeGetMessage, new object[] { this, m_messageCount, iRet, msg }); } } else if ((object.ReferenceEquals(e.UserState.GetType(), typeof(OnWindowMessageParams)))) { OnWindowMessageParams msgParams = (OnWindowMessageParams)e.UserState; if (iRet == 31) { if ((((OnWindowsMessageCreate != null)) && (OnWindowsMessageCreate.GetInvocationList().Length > 0))) { RaiseEventUtility.RaiseEventAndExecuteItInTheTargetThread(OnWindowsMessageCreate, new object[] { msgParams.hWnd, msgParams.msg, msgParams.wParam, msgParams.lParam }); } } else if (iRet == 32) { if ((((OnWindowsMessageInput != null)) && (OnWindowsMessageInput.GetInvocationList().Length > 0))) { RaiseEventUtility.RaiseEventAndExecuteItInTheTargetThread(OnWindowsMessageInput, new object[] { msgParams.hWnd, msgParams.msg, msgParams.wParam, msgParams.lParam }); } } else if (iRet == 33) { if ((((OnWindowsMessageClose != null)) && (OnWindowsMessageClose.GetInvocationList().Length > 0))) { RaiseEventUtility.RaiseEventAndExecuteItInTheTargetThread(OnWindowsMessageClose, new object[] { msgParams.hWnd, msgParams.msg, msgParams.wParam, msgParams.lParam }); } } } } }