2013-12-18 3 views
1

Я обнаружил, что существует статический класс NativeMethods, где определены многие константы Win32.Как получить доступ к NativeMethods.WS_VISIBLE

В моей программе WPF мне нужно создать HwndSource, и поэтому я нуждаюсь в значениях и WS_VISIBLE.

Есть ли способ использования NativeMethods.WS_VISIBLE в моей программе без каких-либо определений?

ответ

1

Это имя шаблона для внутренний класс, содержащий объявления pinvoke. Его не нужно называть «NativeMethods», но FxCop жалуется, если вы его не назовете, поэтому это общий выбор.

факт, что он внутренний останавливает вас от использования его в вашем собственном коде.

Это не проблема, просто объявите свой собственный внутренний класс NativeMethods. Только объявления, которые вы фактически используете. WS_VISIBLE и WS_CHILD просты const объявления. Вы найдете их объявленными в файле WinUser.h на вашем компьютере, которые хранятся в каталоге Windows SDK. Но это C-декларации, язык, который был в списке исчезающих видов в последнее время, вы можете получить C#, просто посетив pinvoke.net web site. Он имеет тенденцию иметь приличные декларации, которые уже пригодны для копирования/вставки в ваш код, они, как правило, точны. Копирование/вставка из опорного источника или выход декомпилятора, как правило, работает хорошо. Или используйте PInvoke Interop Assistant. Нет недостатка источников :)

+0

Но это именно то, что я хочу пропустить. Определения там, поэтому почему я должен создать другой класс, который поддерживает одни и те же вещи? В чем причина того, что MS делает это внутреннее? – GreenEyedAndy

+0

Но это именно то, чего вы не должны делать. Pinvoke всегда является внутренней реализацией. Преднамеренное изменение объявления pinvoke - очень распространенный метод, который никогда не должен использоваться другим кодом. Теперь вы знаете, почему это совершенно не меняется, что вам нужно делать, конечно. –

Смежные вопросы