public static void SendDataMessage(IntPtr hwnd, byte[] messageData) { var copyData = new CopyDataStruct { cbData = 0, dwData = 0, lpData = IntPtr.Zero }; copyData.cbData = messageData.Length; copyData.lpData = Marshal.AllocHGlobal(messageData.Length); Marshal.Copy(messageData, 0, copyData.lpData, messageData.Length); WindowAPI.SendMessage(hwnd, WinMsgType.WM_COPYDATA, 0, ref copyData); Marshal.FreeHGlobal(copyData.lpData); }
private void CompletionWindowOnClosed(object sender, EventArgs eventArgs) { UnbindCompletionWindowEventHandlers(); _completionWindow = null; _isClosing = false; if (_deactivateParentWindowOnCompletionWindowClose) { WithForm(delegate(Form form) { WindowAPI.SendMessage(form.Handle, WindowMessageType.WM_NCACTIVATE, new IntPtr(0), new IntPtr(0)); WindowAPI.SendMessage(form.Handle, WindowMessageType.WM_ACTIVATE, new IntPtr(0), new IntPtr(0)); }); _deactivateParentWindowOnCompletionWindowClose = false; } }
// ReSharper restore InconsistentNaming /// <summary> /// Displays a sort icon (up/down caret or chevron) on the given column. /// </summary> /// <param name="listViewControl"></param> /// <param name="columnIndex"></param> /// <param name="order"></param> /// <exception cref="Win32Exception"></exception> public static void SetSortIcon(this ListView listViewControl, int columnIndex, SortOrder order) { IntPtr columnHeader = WindowAPI.SendMessage(listViewControl.Handle, LVM_GETHEADER, IntPtr.Zero, IntPtr.Zero); for (int columnNumber = 0; columnNumber <= listViewControl.Columns.Count - 1; columnNumber++) { var columnPtr = new IntPtr(columnNumber); var item = new HDITEM { mask = HeaderItemMask.HDI_FORMAT }; if (WindowAPI.SendMessage(columnHeader, HDM_GETITEM, columnPtr, ref item) == IntPtr.Zero) { throw new Win32Exception(); } if (order != SortOrder.None && columnNumber == columnIndex) { switch (order) { case SortOrder.Ascending: item.fmt &= ~HeaderItemFormat.HDF_SORTDOWN; item.fmt |= HeaderItemFormat.HDF_SORTUP; break; case SortOrder.Descending: item.fmt &= ~HeaderItemFormat.HDF_SORTUP; item.fmt |= HeaderItemFormat.HDF_SORTDOWN; break; } } else { item.fmt &= ~HeaderItemFormat.HDF_SORTDOWN & ~HeaderItemFormat.HDF_SORTUP; } if (WindowAPI.SendMessage(columnHeader, HDM_SETITEM, columnPtr, ref item) == IntPtr.Zero) { throw new Win32Exception(); } } }
/// <summary> /// Allows controls to repaint. /// </summary> /// <param name="parent"></param> /// <seealso href="http://stackoverflow.com/a/487757/467582"/> public static void ResumeDrawing(this Control parent) { WindowAPI.SendMessage(parent.Handle, WindowMessageType.WM_SETREDRAW, true, IntPtr.Zero); parent.Refresh(); }
/// <summary> /// Prevents controls from repainting. /// </summary> /// <param name="parent"></param> /// <seealso href="http://stackoverflow.com/a/487757/467582"/> public static void SuspendDrawing(this Control parent) { WindowAPI.SendMessage(parent.Handle, WindowMessageType.WM_SETREDRAW, false, IntPtr.Zero); }