簡體   English   中英

最小化按鈕不會出現在 MFC 對話框中

[英]Minimize button won't appear on MFC Dialog

我在將最小化按鈕添加到我的 MFC 對話框應用程序時遇到了問題。 我已啟用最小化框(true)。

最小化按鈕出現在設計器視圖中,但是當我運行應用程序時按鈕不可見。

其他設置有:樣式:重疊
應用程序窗口:真
邊框:對話框框
工具窗口:假
系統菜單:真

我嘗試添加: ModifyStyle(0, WS_MINIMIZEBOX, TRUE);

OnInitDialog()但還沒有解決它。

我可以選擇 3 種樣式,分別是彈出樣式、子樣式和重疊樣式。 如果我使用彈出窗口,我看不到標題欄並且無法拖動窗口。 如果我使用該樣式,子項會引發訪問沖突,因此我可以選擇的唯一樣式是重疊樣式,它顯示標題欄並允許我拖動窗口但最小化按鈕不可見。

我正在使用 Visual Studio 2019 並運行 Windows 10 1809。

我已經仔細檢查並將最小化框設置為 TRUE 但是它在運行時仍然不會顯示在對話框中。

問題是當我使用彈出窗口樣式時,我根本看不到標題欄! 此外,如果我使用彈出樣式,我將無法拖動窗口(缺少標題欄)。 重疊似乎是我唯一可以使用的樣式。

嘗試這樣的事情:

BOOL CMFCApplication1Dlg::OnInitDialog()
{
    ModifyStyle(0, WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, TRUE);
    ...
}

考慮修改您的對話框模板(在 .RC 文件中)以包含必要的樣式位,而不是在運行時修改樣式。

MFC 與在沒有任何框架的情況下編寫對話框沒有什么不同。 您聲明一個DIALOGEX資源,並讓系統加載它,並顯示基於該模板的對話框。

要獲得帶有最小化框的對話框,它至少需要樣式WS_MINIMIZEBOXWS_SYSMENU 1 打開定義DIALOGEX對話框模板的 .rc 腳本,並確保這兩種樣式存在於STYLE元素中。

基於對話框的應用程序(帶有最小化框)的默認對話框模板通常如下定義:

IDD_MFCAPPLICATION1_DIALOG DIALOGEX  0, 0, 320, 200
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
 | WS_THICKFRAME
 | WS_SYSMENU
 | WS_MINIMIZEBOX
EXSTYLE WS_EX_APPWINDOW
CAPTION ""
FONT 8, "MS Shell Dlg"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,209,179,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,263,179,50,14
    CTEXT           "TODO: Place dialog controls here.",IDC_STATIC,10,96,300,8
END

您無需編寫任何在運行時執行的代碼即可獲得此行為。


1窗口樣式WS_MINIMIZEBOX :窗口有一個最小化按鈕。[...] WS_SYSMENU樣式也必須指定。

BOOL CMFCApplication1Dlg::OnInitDialog(){

ModifyStyle(0, WS_MINIMIZEBOX, TRUE);
ModifyStyle(0, WS_POPUP, TRUE);
ModifyStyle(0, WS_BORDER, TRUE);
ModifyStyle(0, WS_SYSMENU, TRUE);
ModifyStyle(0, WS_CAPTION, TRUE);

暫無
暫無

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

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