5

我想创建这样的弹出窗口(固定大小):

弹出窗口

在我使用 C# 的应用程序中。我已经查看了 NativeWindow,但我不确定这是否是正确的方法。我希望一个窗口的行为与 Windows 7 中的音量控制或“连接到”窗口完全相同。

我怎样才能做到这一点?

4

4 回答 4

4

使用 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;
    }
}

然而,在这两种情况下,当您将鼠标悬停在边缘上时,您仍然会看到一个大小调整光标。我不确定如何防止这种情况发生。

于 2009-05-12T16:02:12.533 回答
2

在您的 CreateParams 中指定 WS_POPUP 和 WS_THICKFRAME。

于 2009-05-12T16:01:11.833 回答
2

我能够做到这一点:

if (m.Msg == 0x84 /* WM_NCHITTEST */) {
    m.Result = (IntPtr)1;
    return;
}
base.WndProc(ref m);
于 2009-05-22T06:33:15.087 回答
0

防止在边框上调整大小的光标句柄WM_NCHITTEST和当超出边框时返回HTBORDER

于 2010-01-04T14:54:25.913 回答