如何在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);