如何在C#中使用SetWindowLong?

如何在C#中使用SetWindowLong?,c#,.net,winapi,pinvoke,C#,.net,Winapi,Pinvoke,我使用此功能: [DllImport ( "user32.dll" )] static extern int SetWindowLong ( IntPtr hWnd, int nIndex, uint dwNewLong ); 并从以下各项传递值: 所以当我称之为: SetWindowLong ( c, WindowLongFlags.GWL_STYLE, WindowStyles.WS_OVERLAPPED ); 我发现以下错误: 参数2:无法从'timoti.Win

我使用此功能:

[DllImport ( "user32.dll" )]
static extern int SetWindowLong ( IntPtr hWnd, int nIndex, uint dwNewLong );
并从以下各项传递值:

所以当我称之为:

SetWindowLong ( c, WindowLongFlags.GWL_STYLE, WindowStyles.WS_OVERLAPPED );
我发现以下错误:

参数2:无法从'timoti.WindowLongFlags'转换为'int'

参数3:无法从“timoti.WindowStyles”转换为“uint”

pinvoke签名是错误的,因为我在网上看到了不同的签名,还是我遗漏了其他东西?

这应该可以修复它

SetWindowLong ( c, (int)WindowLongFlags.GWL_STYLE,
    (uint) WindowStyles.WS_OVERLAPPED);

将pinvoke签名更改为枚举类型。他们应该正确封送。或者将方法签名更改为对索引使用
uint
而不是
int
。谢谢Peter,我这样做了,但它仍然显示无法将两者从int转换为uint。@BenVoigt-是的!我的错!
SetWindowLong ( c, (int)WindowLongFlags.GWL_STYLE,
    (uint) WindowStyles.WS_OVERLAPPED);