我要用调用Windows API的GetWindowDC(),而他的函数原形是
HDC GetWindowDC(
HWND hWnd // handle to window
);
而在C#中就要申明成这样:
[DllImport("User32.dll")]
private static extern IntPtr GetWindowDC(IntPtr hWnd);为什么呢?
为什么IntPrt数据类型就相当于HWND呢?
MSDN上对于API函数中的参数也没说明其类型就相当于C#中的哪种数据类型,那我要使用的时候怎么才能知道C#中的哪种数据类型
才是对应API参数中的数据类型呢?简而言之我的问题就是:
Windows API中的数据类型和C#中的数据类型,它们之间的对应关系,我应该从何处得知?
或者说我在Windows API中遇到C#中未定义的数据类型,我应该如何找出在C#中与之对应的数据类型?这个问题比较菜,希望有高手能给小弟耐心的讲解一下,谢谢了!
HDC GetWindowDC(
HWND hWnd // handle to window
);
而在C#中就要申明成这样:
[DllImport("User32.dll")]
private static extern IntPtr GetWindowDC(IntPtr hWnd);为什么呢?
为什么IntPrt数据类型就相当于HWND呢?
MSDN上对于API函数中的参数也没说明其类型就相当于C#中的哪种数据类型,那我要使用的时候怎么才能知道C#中的哪种数据类型
才是对应API参数中的数据类型呢?简而言之我的问题就是:
Windows API中的数据类型和C#中的数据类型,它们之间的对应关系,我应该从何处得知?
或者说我在Windows API中遇到C#中未定义的数据类型,我应该如何找出在C#中与之对应的数据类型?这个问题比较菜,希望有高手能给小弟耐心的讲解一下,谢谢了!
HANDLE Unmanaged C language type
void* Managed class name
System.IntPtr Description
32 bits on 32-bit Windows operating systems, 64 bits on 64-bit Windows operating systems.
C#的平台调用是不伦不类的,也不方便,谨慎使用.也不使用最好
char * 用string表示
基本都差不多
不是看作一个指针,它就是一个能容纳指针和句柄的数据类型我的问题是不是为什么IntPtr可以当作HWND,
而是遇到API中的参数数据类型在C#中未定义,怎么找出在C#中与之相对应的数据类型又比如说API中的CALLBACK类型,C#中是没有那我怎么知道此时在C#中就该用delegate
句柄 (dWord) -> IntPtr
结构-> 结构或者类
我也在用,只能用到哪个查哪个了,变量还不是男点,结构体是最麻烦的,本来可以直接调用的,还得转化半天...
http://blog.csdn.net/Mittermeyer/archive/2007/04/27/1586867.aspx