Я использовал GetWindowLong так:
[DllImport("user32.dll")]
private static extern IntPtr GetWindowLong(IntPtr hWnd, int nIndex);
Но в соответствии с документами MSDN я должен использовать GetWindowLongPtr для обеспечения 64-битной совместимости.
http://msdn.microsoft.com/en-us/library/ms633584(VS.85).aspx
Документы MSDN для GetWindowLongPtr говорят, что я должен определить это так (на C ++):
LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex);
Раньше я использовал IntPtr в качестве возвращаемого типа, но какого черта я использовал бы для эквивалента для LONG_PTR? Я также видел GetWindowLong, определенный как это в C #:
[DllImport("user32.dll")]
private static extern long GetWindowLong(IntPtr hWnd, int nIndex);
Что правильно, и как я могу обеспечить надлежащую 64-битную совместимость?