如何使用ListView_GetBkImage宏:
http://msdn.microsoft.com/en-us/library/bb761246(v=VS.85).aspx
...来自C#/ WinForms应用程序?我认为这个宏只包含SendMessage
方法,但我不确定。我找不到任何基于C#的样本。
基本上我正在尝试获取引用桌面背景位图的LVBKIMAGE(http://msdn.microsoft.com/en-us/library/bb774742(v=VS.85).aspx)结构。
答案 0 :(得分:2)
你做不到。编译时由C / C ++编译器处理宏,但您想要访问二进制库。您只需在源代码中找到宏,查看它的作用并在C#代码中执行相同的操作。它不应该太复杂。如果您还没有它,请下载Platform SDK并查看文档中提到的.h文件。
编辑:确定,因此宏定义为:
#define ListView_GetBkImage(hwnd, plvbki) \
(BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)(plvbki))
SNDMSG
简单定义为SendMessage
。 LVM_GETBKIMAGE是一个整数 - 对于ASCII版本它是0x1045而对于Unicode版本是0x108B。 (如果你不确定,你可能想要Unicode版本。)所以整个过程解决了:
(BOOL)SendMessage(hwnd, 0x108B, 0, plvbki)
应该很容易映射到C#。使用Reflector查看System.Windows.Forms,了解Microsoft如何导入SendMessage函数。它将被标记为内部,因此您无法调用它,但您可以复制它。 plvbki
是指向结构的指针 - 您需要创建一个等效于LVBKIMAGE
的C#。实际上,MS也可能已经为你做了这个,所以环顾四周。