コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
ファイル: ListViewExtensions.cs プロジェクト: rafntor/bdhero
        // 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();
                }
            }
        }
コード例 #4
0
 /// <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();
 }
コード例 #5
0
 /// <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);
 }