SetWindowLong (coredll)
Last changed: -84.45.5.97

.
Summary

C# Signature:

[DllImport("user32.dll", SetLastError=true)]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll", SetLastError=true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);

VB Signature:

<DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer
End Function
<DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function GetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer
End Function

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

The sample code is compatible with Visual Studio .Net 2005.

Tips & Tricks:

Please add some!

Sample Code:

    private const int GWL_STYLE = -16;
    private const int BS_CENTER = 0x00000300;
    private const int BS_VCENTER = 0x00000C00;
    private const int BS_MULTILINE = 0x00002000;

    public static void SetButtonStyle(Button ctrl)
    {
        IntPtr hWnd;
        int style;

       // ctrl.Capture = true;
        // hWnd = GetCapture();
        // ctrl.Capture = false;

       // Comment below and uncomment above if using Visual Studio 2003
       hWnd = ctrl.Handle;

        style = GetWindowLong(hWnd, GWL_STYLE);
        SetWindowLong(hWnd, GWL_STYLE, (style | BS_CENTER | BS_VCENTER | BS_MULTILINE));

        ctrl.Refresh();
    }

Documentation