以前,当我想创建一个点击表单时,我很想使用平台调用来设置扩展窗口样式(GetWindowLong
/ SetWindowLong
in user32.dll
)。
刚才我想让它对 Alt+Tab 窗口列表不可见,并且我找到了一个覆盖CreateParams
设置扩展窗口样式而不是使用GetWindowLong
/的示例SetWindowong
。
现在我有这个:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x80000 /* WS_EX_LAYERED */ | 0x20 /* WS_EX_TRANSPARENT */ | 0x80/* WS_EX_TOOLWINDOW */;
return cp;
}
}
现在明显的变化不需要任何平台调用。
所以我的几个问题:
- 在 Windows 上会有任何功能差异吗?(只是说我现在什至没有 XP 机器可以尝试。)
- 现在我没有平台调用,我的程序会在 Linux/Mac 上的 Mono 上运行吗?(如果我现在可以尝试,我就不会在这里问你了。)
Control.CreateParams
出现在 msdn 上,并有一个操作窗口样式的示例。那么为什么 StackOverflow 上的一些在线“示例”和答案告诉人们使用GetWindowLong
/SetWindowLong
?