【发布时间】:2012-03-06 03:20:56
【问题描述】:
我正在使用以下代码:
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 位机器上都可以?
【问题讨论】:
-
How do I pinvoke to GetWindowLongPtr and SetWindowLongPtr on 32-bit platforms?Hans 的答案可能重复,通常情况下非常出色且准确。
标签: c# winapi 64-bit pinvoke 32-bit