[英]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_MINIMIZEBOX
和WS_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.