GetDC () DllImport для приложений x64 - PullRequest
1 голос
/ 12 марта 2010

Если вы проведете небольшое исследование в Интернете, вы увидите много стилей DLLImport для этой функции user32.dll:

HDC GetDC(HWND hWnd);

Вопрос в том, какой тип больше подходит для приложений .NET x64 (или скомпилирован с целью Platform как AnyCPU на компьютере с архитектурой x64 или конкретно как x64)?Например, IntPtr увеличивается до размера 8 в процессе x64, это может быть проблемой?Uint более уместен, чем Uint64?Каков размер указателей, которые эта функция использует при использовании в процессе x64?DLL называется user32.dll, работает ли она как 32-разрядная или 64-разрядная в операционной системе x64?

[DllImport("user32.dll",EntryPoint="GetDC")]
public static extern IntPtr GetDC(IntPtr hWnd);
public static extern uint GetDC(uint hWnd);
public static extern int GetDC(int hWnd);

Спасибо!

1 Ответ

2 голосов
/ 12 марта 2010

Вы должны представлять дескрипторы (включая HDC и HWND) от IntPtr. Это все еще работает в системе x64: хотя IntPtr составляет 8 байт, а DLL называется User32.dll, размер дескриптора по-прежнему соответствует размеру IntPtr.

...