如何在C#中使用SetWindowLong?

时间:2014-05-01 19:31:05

标签: c# .net winapi pinvoke

我使用这个功能:

[DllImport ( "user32.dll" )]
static extern int SetWindowLong ( IntPtr hWnd, int nIndex, uint dwNewLong );

并传递以下值:

http://pinvoke.net/default.aspx/Constants/Window%20styles.html

enum WindowLongFlags : int
{
    GWL_EXSTYLE = -20,
    GWLP_HINSTANCE = -6,
    GWLP_HWNDPARENT = -8,
    GWL_ID = -12,
    GWL_STYLE = -16,
    GWL_USERDATA = -21,
    GWL_WNDPROC = -4,
    DWLP_USER = 0x8,
    DWLP_MSGRESULT = 0x0,
    DWLP_DLGPROC = 0x4
}

所以当我把它称为:

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

我收到这些错误:

  

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

     

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

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

1 个答案:

答案 0 :(得分:3)

这应该解决它

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