[DllImport("comctl32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr ListView_CreateDragImage(IntPtr hwnd, int iItem, int lpptUpLeft);调用时,说找不到入口点,有人知道么?谢谢
  

解决方案 »

  1.   

    ListView_CreateDragImage是定义在commctrl.h中的一个宏,不过C#是不支持宏的。
    它的原形是这样的:
    #define ListView_CreateDragImage(hwnd, i, lpptUpLeft) \
        (HIMAGELIST)SNDMSG((hwnd), LVM_CREATEDRAGIMAGE, (WPARAM)(int)(i), (LPARAM)(LPPOINT)(lpptUpLeft))而SNDMSG实际上是SendMessage的宏定义,所以P/Invoke的时候应该定义SendMessage函数(user32.dll)。
    LVM_CREATEDRAGIMAGE在头文件里有定义,但是使用了一个LVM_FIRST的东东,这个东东在哪我也没找到,baidu一下,发现:LVM_FIRST = &H1000……
      

  2.   

    我有用Sendmessage来代替,可是返回的句柄始终为0,怎么回事阿?
      

  3.   

    现在我能返回拖拽列表了,又有新问题
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int nIndex, ref Point lParam);Point ptupleft = new Point(0, 0);
    ListViewItem lvi;
    IntPtr dragImageList = SendMessage(listView.Handle, 0x1000+33, lvi.Index, ref ptupleft);发现返回的拖拽图列表,和listview里面显示的并不一样,上面的Icon居然左对齐了,然后下面的汉字也不是蓝底的。谁能知道怎么解决么?