SetWindowLong / GetWindowLong и 32-битные / 64-битные процессоры

Я использую следующий код:

const int GWL_STYLE = (-16);

const UInt32 WS_POPUP = 0x80000000;
const UInt32 WS_CHILD = 0x40000000;

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

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

и где-то ...

SetWindowLong(this.Handle, GWL_STYLE,
             ((GetWindowLong(this.Handle, GWL_STYLE) & ~(WS_POPUP)) | WS_CHILD));

Будет ли это правильно работать как на 32-битных, так и на 64-битных машинах?

Если нет, если я скомпилировать мое приложение для запуска как процесс x86, будет ли оно нормально работать на 64-битной машине?

И как я могу переписать следующий код, чтобы он работал как на 32-битных, так и на 64-битных машинах?

6
задан Cody Gray 14 February 2012 в 21:02
поделиться