我想创建这样的弹出窗口(固定大小):
在我使用 C# 的应用程序中。我已经查看了 NativeWindow,但我不确定这是否是正确的方法。我希望一个窗口的行为与 Windows 7 中的音量控制或“连接到”窗口完全相同。
我怎样才能做到这一点?
使用 WinForms,创建一个表单并设置以下内容:
Text = "";
FormBorderStyle = Sizable;
ControlBox = false;
MaximizeBox = false;
MinimizeBox = false;
ShowIcon = false;
编辑:
这确实要求窗口相当大,但你可以稍微作弊。将 MinimumSize 和 MaximumSize 设置为所需的大小。这将阻止用户调整大小。
正如 Jeff 建议的那样,您也可以在 CreateParams 中执行此操作:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
unchecked
{
cp.Style |= (int)0x80000000; // WS_POPUP
cp.Style |= 0x40000; // WS_THICKFRAME
}
return cp;
}
}
然而,在这两种情况下,当您将鼠标悬停在边缘上时,您仍然会看到一个大小调整光标。我不确定如何防止这种情况发生。
在您的 CreateParams 中指定 WS_POPUP 和 WS_THICKFRAME。
我能够做到这一点:
if (m.Msg == 0x84 /* WM_NCHITTEST */) {
m.Result = (IntPtr)1;
return;
}
base.WndProc(ref m);
防止在边框上调整大小的光标句柄WM_NCHITTEST
和当超出边框时返回HTBORDER
。