[DllImport("comctl32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr ListView_CreateDragImage(IntPtr hwnd, int iItem, int lpptUpLeft);调用时,说找不到入口点,有人知道么?谢谢
public static extern IntPtr ListView_CreateDragImage(IntPtr hwnd, int iItem, int lpptUpLeft);调用时,说找不到入口点,有人知道么?谢谢
它的原形是这样的:
#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……
[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居然左对齐了,然后下面的汉字也不是蓝底的。谁能知道怎么解决么?