私は次のように 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
GetWindowLongPtr の MSDN ドキュメントには、(C++ で) 次のように定義する必要があると書かれています。
LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex);
以前は戻り値の型として IntPtr を使用していましたが、LONG_PTR と同等のものには一体何を使用するのでしょうか? C# で GetWindowLong が次のように定義されていることも確認しました。
[DllImport("user32.dll")]
private static extern long GetWindowLong(IntPtr hWnd, int nIndex);
何が正しいのですか? また、適切な 64 ビット互換性を確保するにはどうすればよいですか?