日期:2014-05-20  浏览次数:20852 次

有谁用过这个函数:ListView_CreateDragImage,知道它属于哪个DLL么?
[DllImport( "comctl32.dll ",   CharSet   =   CharSet.Auto)]
                public   static   extern   IntPtr   ListView_CreateDragImage(IntPtr   hwnd,   int   iItem,   int   lpptUpLeft);

调用时,说找不到入口点,有人知道么?谢谢
   


------解决方案--------------------
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……