簡體   English   中英

Aero玻璃與C#中的彈出窗口接壤

[英]Aero Glass borders on popup windows in C#

我想創建這樣的彈出窗口(固定大小):

彈出窗口

在我的應用程序中使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM