我是GUI編程中的新手。我正在使用Visual Studio(C++)。我想問的是:當從主窗口啓動對話框時,有沒有辦法讓父窗口不可見?另外,如何讓窗口從對話框中退出?使用C++更改GUI可見性
回答
假設你正在使用MFC和一個模態對話框,那麼你可以做到以下幾點:
mainWindow.ShowWindow(SW_HIDE);
dialog.DoModal();
mainWindow.ShowWindow(SW_SHOW);
關於到的意見,這裏是一個無模式的解決方案:
YourDialog。 h
class YourDialog : public CDialog {
CWnd& _mainWindowToHide;
protected:
DECLARE_MESSAGE_MAP();
void OnShowWindow(BOOL bShow, UINT nStatus);
virtual void OnOK();
virtual void OnCancel();
public:
YourDialog(CWnd& mainWindowToHide);
};
YourDialog.cpp
BEGIN_MESSAGE_MAP(YourDialog, CDialog)
ON_WM_SHOWWINDOW()
END_MESSAGE_MAP()
YourDialog::YourDialog(CWnd& mainWindowToHide)
: _mainWindowToHide(mainWindowToHide) { }
void YourDialog::OnShowWindow(BOOL bShow, UINT nStatus) {
if(bShow == TRUE)
_mainWindowToHide.ShowWindow(SW_HIDE);
CDialog::OnShowWindow(bShow, nStatus);
}
void YourDialog::OnOK() {
_mainWindowToHide.ShowWindow(SW_SHOW);
CDialog::OnOK();
}
void YourDialog::OnCancel() {
_mainWindowToHide.ShowWindow(SW_SHOW);
CDialog::OnCancel();
}
等。無論您想要使用此:
dialogMember = new YourDialog(mainWindow);
dialogMember->Create(IDD_YOUR_DIALOG);
dialogMember->ShowWindow(SW_SHOW);
這不符合你的想法。如果你隱藏一個窗口,這也隱藏了所有的窗口。 – IInspectable
那麼,誰說對話框是由父窗口擁有的? – RazorX
你叫'DoModal'。這意味着一個模態對話框。沒有所有者窗口的模式對話框並沒有太多意義。而且因爲它被稱爲'parentWindow',所以說它不是很有說服力。 – IInspectable
什麼你問做的不是很好的用戶界面設計,因爲它會引起混淆用戶當Windows啓動莫名其妙地消失。
您可能要做的就是將用戶的注意力集中在對話框上並強制他們在允許他們回到主窗口之前使用它。這已經通過將對話框設置爲模態對話框來實現 - 請注意,對話框和窗口之間存在區別。對話框不允許在父窗口中輸入。
A **模式**對話框不允許用戶在父窗口中輸入。一個**無模式**對話框將會。 –
想要寫出相同的內容,但這裏有一個[鏈接](http://msdn.microsoft.com/en-us/library/windows/desktop/ms644996(v = vs.85).aspx)以供說明。 – RazorX
- 1. 更改可見性屬性
- 2. 使用z-index更改div可見性
- 3. 更改NSbox的可見性Objective C
- 4. 佈局更改可見性
- 5. 更改itemRemderer的可見性
- 6. 如何使用方向更改控制視圖可見性(可見/不可見)?
- 7. 使用MVVM更改父容器的可見性更改的TextBox.Text
- 8. 更改CSS中的可見性屬性?
- 9. 使用複選框使用javascript更改對象可見性?
- 10. 如何使用c改變用戶控件的div可見性#
- 11. 更改Gridview項目的可見性
- 12. 如何更改視圖的可見性?
- 13. 動態更改片段的可見性
- 14. 如何更改onclick的可見性
- 15. 如何更改NSCarbonWindow的可見性?
- 16. 如何更改Div的可見性
- 17. QML動畫可見屬性更改
- 18. Onclick更改類的可見性
- 19. .net - 更改模板列的可見性
- 20. 更改方法的可見性
- 21. 更改複選框的可見性
- 22. 單擊按鈕以更改可見性
- 23. 更改customTask上按鈕的可見性
- 24. Listview滾動更改按鈕可見性?
- 25. 點擊更改小部件可見性
- 26. RadioButtonList更改表的可見性
- 27. 更改片段中的TextView可見性
- 28. 無法更改日曆的可見性
- 29. 使用jquery更改標籤標籤的可見性
- 30. Monodroid - 使用元數據更改構造器可見性
這不是關於一般的C++,而是更多關於Win32(和潛在的MFC)的。它也沒有表現出解決問題的任何嘗試。 –