Я новичок в программировании GUI. Я использую Visual Studio (C++). Я хотел спросить: есть ли способ сделать родительское окно невидимым при запуске диалогового окна из главного окна? Также, как сделать окно снова появляться при выходе из диалогового окна?Изменение видимости графического интерфейса с использованием C++
ответ
Предполагая, что вы используете 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
Что вы просите сделать, это не очень хороший дизайн пользовательского интерфейса, так как это может привести к путанице для пользователя, когда окна необъяснимо начинают исчезать.
Что вы, вероятно, пытаетесь сделать, это привлечь внимание пользователя к диалоговому окну и заставить их использовать его, прежде чем возвращать их в главное окно. Это уже достигнуто, сделав диалоговое окно модальным диалоговым окном - обратите внимание, что существует различие между диалогом и окном. Диалоговое окно не позволяет вводить данные в родительском окне.
Диалоговое окно ** modal ** не позволяет пользователю вводить в родительском окне. Диалоговое окно ** modeless ** будет. –
Хочет написать то же самое, но здесь [ссылка] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644996 (v = vs.85) .aspx) для уточнения. – RazorX
- 1. Автоматизация тестирования графического интерфейса с использованием C#
- 2. Создание графического интерфейса с использованием GridBagLayout (Java)
- 3. Создание графического интерфейса Java с использованием 2dGraphics
- 4. Создание графического интерфейса с использованием Tkinter
- 5. Эффект отрисовки графического интерфейса, подготовленного с использованием форм окна C#
- 6. Создание графического интерфейса с использованием файла XML в C#
- 7. Создание графического интерфейса Windows Phone 8 с использованием C++
- 8. Обновление графического интерфейса пользователя с использованием C++/CLR Формы Windows
- 9. Каркасы/библиотеки графического интерфейса C++
- 10. Изменение графического интерфейса клиента веб-сервиса ASP.NET
- 11. Непрерывное состояние - эффективное изменение графического интерфейса
- 12. Монодид - изменение видимости конструктора с использованием метаданных
- 13. Разработка кросс-платформенного графического интерфейса с C++
- 14. Создание графического интерфейса с turbo C++?
- 15. Изменение центра графического интерфейса с помощью мышки и перекраска
- 16. Используйте AS3 для включения/выключения видимости графического интерфейса
- 17. Утилита графического интерфейса Python для графического интерфейса с анимацией
- 18. Создание графического интерфейса Nice на языке C
- 19. Изменение графического экземпляра с использованием ActionScript
- 20. Создание симулятора графического интерфейса в C
- 21. Изменение видимости элементов GridView с использованием привязки
- 22. изменение видимости метки с использованием jquery
- 23. Разработка графического интерфейса пользователя
- 24. Современный дизайн графического интерфейса
- 25. Прототипирование графического интерфейса с клиентом
- 26. Разработка графического интерфейса с PySide
- 27. Java с помощью графического интерфейса
- 28. Создание графического интерфейса с MFC
- 29. Разработка графического интерфейса с Python
- 30. C#: Обновления графического интерфейса Events & Thread Safe
Речь идет не о C++ в целом, а о Win32 (и потенциально MFC). Он также не демонстрирует попыток решить проблему. –