Доступ Win32 / MFC "Stuff" из C # - PullRequest
2 голосов
/ 20 июля 2010

В этом посте есть отличный пример кода:

DateTimePicker автоматически перемещается к следующей части даты

, которая показывает, как очистить некоторые действия DateTimePicker в.СЕТЬ.К сожалению, код не скомпилируется, так как .NET не может понять вещи типа WM_KEYDOWN.Мне удалось зайти в Google и получить значения для многих констант, например

WM_KEYUP = 0x0101;

Но я действительно застрял, заставляя работать NMHDR и WM_REFLECT.Есть ли какая-нибудь сборка Win32, которую мне нужно добавить в свой проект, чтобы все это заработало?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 20 июля 2010

Посетите pinvoke.net для этих объявлений. Или используйте PInvoke Interop Assistant .

3 голосов
/ 20 июля 2010

Вам нужно использовать то, что известно как P / Invoke .

[...] По мере того, как растущая база разработчиков переводит свои производственные приложения в управляемый код, кажется,Вполне естественно, что у разработчиков будет еще больше поводов погрузиться в базовую операционную систему для получения некоторой важной функциональности - по крайней мере, на данный момент.К счастью, функции взаимодействия в общеязыковой среде исполнения (CLR), называемой Platform Invoke (P / Invoke), очень полны [...].

http://www.pinvoke.net/default.aspx/Constants/WM.html

private const UInt32 WM_KEYDOWN        = 0x0100;

http://www.pinvoke.net/default.aspx/Structures/NMHDR.html

[StructLayout(LayoutKind.Sequential)] 
struct NMHDR 
{
   public IntPtr hwndFrom;
   public IntPtr idFrom;
   public int code;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...