GetClassLongPtr (user32)
Last changed: -64.111.150.32

.
Summary

C# Signature:

public static IntPtr GetClassLongPtr(HandleRef hWnd, int nIndex)
{
    if (IntPtr.Size > 4)
        return GetClassLongPtr64(hWnd, nIndex);
    else
        return new IntPtr(GetClassLongPtr32(hWnd, nIndex));
}

[DllImport("user32.dll", EntryPoint="GetClassLong")]
public static extern uint GetClassLongPtr32(HandleRef hWnd, int nIndex);

[DllImport("user32.dll", EntryPoint="GetClassLongPtr")]
public static extern IntPtr GetClassLongPtr64(HandleRef hWnd, int nIndex);

User-Defined Types:

None.

Notes:

GetClassLongPtr is 64-bit safe, GetClassLong is not.

Because GetClassLong is not available on older 32-bit operating systems, a special wrapper function is required. The MSDN documentation specifies that GetClassLongPtr is supported on older 32-bit operating systems such as Windows 95. However, the Win32 API actually uses a macro to change GetClassLongPtr to GetClassLong on these older systems.

Testing the size of the IntPtr is the easiest way to determine if the platform is 64-bit.

Tips & Tricks:

Please add some!

Sample Code:

Please add some!

Alternative Managed API:

Do you know one? Please contribute it!

Documentation