如果您在互联网上进行一些研究,您将看到此user32.dll功能的许多DLLImport样式:
HDC GetDC(HWND hWnd);
问题是:哪种类型更适合.NET x64应用程序(在x64计算机上使用平台目标作为AnyCPU进行编译,或者特别是作为x64编译)?例如,IntPtr在x64进程上增长到8,这可能是个问题吗?是否比Uint64更合适?在x64进程中使用时,此函数使用的指针大小是多少? DLL被称为user32.dll它在x64操作系统上是32位还是64位?
[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);
谢谢!
答案 0 :(得分:2)
您应该通过IntPtr表示句柄(包括HDC和HWND)。这仍然适用于x64系统:虽然IntPtr是8个字节而DLL被称为User32.dll,但句柄大小仍然与IntPtr大小匹配。