Как типы Win32 представлены в C# P/Invoke?

Я пытаюсь назвать PrintDlgW Win32 API от C# через P/Invoke. С помощью Помощника P/Invoke Interop 1.0 от Microsoft, я могу объявить необходимые структуры данных и функции импорта от DLL. Но как использовать HDC или HWND в C#?Заранее спасибо.

6
задан smwikipedia 17 February 2010 в 13:50
поделиться

3 ответа

Как сказали wcoenen и Дэйв Маркл , у вас есть старая версия, которая не имеет опции --keep-local . Более конкретно этот вариант был представлен в версии 1.5.

В качестве обходного решения:

  1. Скопируйте файлы из рабочей копии
  2. svn delete
  3. svn commit
  4. Скопируйте их обратно в рабочую копию
  5. Добавьте их в svn: ignore , чтобы они больше не возвращались!
-121--2138810-

Это может облегчить это

using HWND = System.IntPtr;

Затем используйте HWND в своем pInvoke..., чтобы облегчить чтение и сохранить его «таким же», как подпись pinvoke.

Надеюсь, что это поможет, С уважением, Том.

-121--4378620-

Этот сайт имеет хорошие примеры со структурами, уже определенными для нескольких API. Структура здесь .

2
ответ дан 17 December 2019 в 00:08
поделиться

HWND в C++ на самом деле является void *, который в C# представлен типом IntPtr.

4
ответ дан 17 December 2019 в 00:08
поделиться

Это может упростить задачу

using HWND = System.IntPtr;

Затем используйте HWND в вашем pInvoke... чтобы облегчить чтение и сохранить его "таким же", как сигнатура pinvoke.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

1
ответ дан 17 December 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: