Вы не можете. Макрос обрабатывается во время компиляции компилятором C / C ++, но вы хотите получить доступ к двоичной библиотеке. Вам просто нужно найти макрос в исходном коде, посмотреть, что он делает, и сделать то же самое в коде C #. Это не должно быть слишком сложным. Скачайте Platform SDK, если у вас его еще нет, и посмотрите файл .h, упомянутый в документации.
Редактировать: ОК, поэтому макрос определен как:
#define ListView_GetBkImage(hwnd, plvbki) \
(BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)(plvbki))
SNDMSG
просто определяется как SendMessage
. LVM_GETBKIMAGE - это целое число: 0x1045 для версии ASCII и 0x108B для версии Unicode. (Возможно, вам нужна версия Unicode, если вы не уверены.) Итак, все решается следующим образом:
(BOOL)SendMessage(hwnd, 0x108B, 0, plvbki)
Там должно быть достаточно легко сопоставить с C #. Посмотрите в System.Windows.Forms, используя Reflector, чтобы увидеть, как Microsoft импортировала функцию SendMessage. Он будет помечен как внутренний, поэтому вы не можете его назвать, но вы можете скопировать его. plvbki
- указатель на структуру - вам нужно создать C # эквивалент LVBKIMAGE
. На самом деле, MS, вероятно, сделал это и для вас, так что поищите.