//用在SETreeView 的拖放操作时
//http://www.codeproject.com/KB/tree/TreeViewDragDrop.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Sheng.Winform.Controls
{
    /// <summary>
    /// 
    /// </summary>
    public class DragHelper
    {
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        [DllImport("comctl32.dll")]
        public static extern bool InitCommonControls();
        /// <summary>
        /// 
        /// </summary>
        /// <param name="himlTrack"></param>
        /// <param name="iTrack"></param>
        /// <param name="dxHotspot"></param>
        /// <param name="dyHotspot"></param>
        /// <returns></returns>
        [DllImport("comctl32.dll", CharSet = CharSet.Auto)]
        public static extern bool ImageList_BeginDrag(IntPtr himlTrack, int
            iTrack, int dxHotspot, int dyHotspot);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        [DllImport("comctl32.dll", CharSet = CharSet.Auto)]
        public static extern bool ImageList_DragMove(int x, int y);
        /// <summary>
        /// 
        /// </summary>
        [DllImport("comctl32.dll", CharSet = CharSet.Auto)]
        public static extern void ImageList_EndDrag();
        /// <summary>
        /// 
        /// </summary>
        /// <param name="hwndLock"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        [DllImport("comctl32.dll", CharSet = CharSet.Auto)]
        public static extern bool ImageList_DragEnter(IntPtr hwndLock, int x, int y);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="hwndLock"></param>
        /// <returns></returns>
        [DllImport("comctl32.dll", CharSet = CharSet.Auto)]
        public static extern bool ImageList_DragLeave(IntPtr hwndLock);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="fShow"></param>
        /// <returns></returns>
        [DllImport("comctl32.dll", CharSet = CharSet.Auto)]
        public static extern bool ImageList_DragShowNolock(bool fShow);

        static DragHelper()
        {
            InitCommonControls();
        }
    }
}
