Второе окно в программе Topic is solved
Второе окно в программе
Как правильно мне сделать? Мне нужно чтобы из главного окна можно было вызвать другое окно (настроек программы).
Скажите последовательность моих действий.
Непонятны такие моменты:
1. Нужно сделать другой проект или добавить новое окно к текущему проекту?
2. Создал например я второе окно. Это будут другие исходные файлы ... как мне вызывать отображение одного окна из другого?
3. Если окна разные ... как передавать события из одного окна в другое. В винде я создавал свои события и отлавливал события дочернего окна в основном окне. А как тут это дело происходит? Покажите простой пример (если такое возможно)
Скажите последовательность моих действий.
Непонятны такие моменты:
1. Нужно сделать другой проект или добавить новое окно к текущему проекту?
2. Создал например я второе окно. Это будут другие исходные файлы ... как мне вызывать отображение одного окна из другого?
3. Если окна разные ... как передавать события из одного окна в другое. В винде я создавал свои события и отлавливал события дочернего окна в основном окне. А как тут это дело происходит? Покажите простой пример (если такое возможно)
-
- Super wx Problem Solver
- Posts: 401
- Joined: Wed Sep 21, 2005 8:17 am
- Location: Rostov-on-Don, Southern Russia
Re: Второе окно в программе
Нужно решить, окно будет фреймом или диалогом.midisa wrote:Как правильно мне сделать? Мне нужно чтобы из главного окна можно было вызвать другое окно (настроек программы).
Скажите последовательность моих действий.
Непонятны такие моменты:
1. Нужно сделать другой проект или добавить новое окно к текущему проекту?
2. Создал например я второе окно. Это будут другие исходные файлы ... как мне вызывать отображение одного окна из другого?
3. Если окна разные ... как передавать события из одного окна в другое. В винде я создавал свои события и отлавливал события дочернего окна в основном окне. А как тут это дело происходит? Покажите простой пример (если такое возможно)
Другой проект добавлять не нужно.
В папке samples, есть примеры приложений на эту тему.
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Re: Второе окно в программе
Я нашел какие то семплы у себя на компе, но там вообще не в тему. Дайте пожалуйста ссылку на примеры.Mojo wrote:Нужно решить, окно будет фреймом или диалогом.midisa wrote:Как правильно мне сделать? Мне нужно чтобы из главного окна можно было вызвать другое окно (настроек программы).
Скажите последовательность моих действий.
Непонятны такие моменты:
1. Нужно сделать другой проект или добавить новое окно к текущему проекту?
2. Создал например я второе окно. Это будут другие исходные файлы ... как мне вызывать отображение одного окна из другого?
3. Если окна разные ... как передавать события из одного окна в другое. В винде я создавал свои события и отлавливал события дочернего окна в основном окне. А как тут это дело происходит? Покажите простой пример (если такое возможно)
Другой проект добавлять не нужно.
В папке samples, есть примеры приложений на эту тему.
Я разобрался как создать второе окно в программе.
Как из главного окна, которое отображено дать команду отображения другого окна которое еще не отображено.
Делаю так:
void FrmPass::m_bp_create_uid_click( wxCommandEvent& event )
{
FrmSetup dlg;
dlg->Show(true);
}
А ему не нравится! Как правильно сделать? Не сочтите за труд, дайте ссылку на примеры или бросьте его куда нибудь.
Как из главного окна, которое отображено дать команду отображения другого окна которое еще не отображено.
Делаю так:
void FrmPass::m_bp_create_uid_click( wxCommandEvent& event )
{
FrmSetup dlg;
dlg->Show(true);
}
А ему не нравится! Как правильно сделать? Не сочтите за труд, дайте ссылку на примеры или бросьте его куда нибудь.
-
- Super wx Problem Solver
- Posts: 401
- Joined: Wed Sep 21, 2005 8:17 am
- Location: Rostov-on-Don, Southern Russia
dlg это не указатель, поэтому через стрелку нельзя, нужно типа dlg.Show();midisa wrote:Я разобрался как создать второе окно в программе.
Как из главного окна, которое отображено дать команду отображения другого окна которое еще не отображено.
Делаю так:
void FrmPass::m_bp_create_uid_click( wxCommandEvent& event )
{
FrmSetup dlg;
dlg->Show(true);
}
А ему не нравится! Как правильно сделать? Не сочтите за труд, дайте ссылку на примеры или бросьте его куда нибудь.
Поищу у себя пример, если найду подходящий кину.
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
-
- Super wx Problem Solver
- Posts: 401
- Joined: Wed Sep 21, 2005 8:17 am
- Location: Rostov-on-Don, Southern Russia
вот пример.... был как говорится "под носом" в меню этого форума "wxWidgets tutorial" http://zetcode.com/tutorials/wxwidgetstutorial/dialogs/ смысл думаю будет понятен.
Ток диалог заменить фреймом.
Ток диалог заменить фреймом.
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Смотрел я этот текст. Вообще не понятен смысл.Mojo wrote:вот пример.... был как говорится "под носом" в меню этого форума "wxWidgets tutorial" http://zetcode.com/tutorials/wxwidgetstutorial/dialogs/ смысл думаю будет понятен.
Ток диалог заменить фреймом.
Вот класс окна который создан:
#include "gui.h"
/** Implementing FrmSetup */
class FormSetup : public FrmSetup
{
public:
/** Constructor */
FormSetup( wxWindow* parent );
};
Как я должен дать команду, чтобы отобразить это окно?
-
- Super wx Problem Solver
- Posts: 401
- Joined: Wed Sep 21, 2005 8:17 am
- Location: Rostov-on-Don, Southern Russia
вот код из примера minimal что в каталоге samplesmidisa wrote:Смотрел я этот текст. Вообще не понятен смысл.Mojo wrote:вот пример.... был как говорится "под носом" в меню этого форума "wxWidgets tutorial" http://zetcode.com/tutorials/wxwidgetstutorial/dialogs/ смысл думаю будет понятен.
Ток диалог заменить фреймом.
Вот класс окна который создан:
#include "gui.h"
/** Implementing FrmSetup */
class FormSetup : public FrmSetup
{
public:
/** Constructor */
FormSetup( wxWindow* parent );
};
Как я должен дать команду, чтобы отобразить это окно?
Code: Select all
// 'Main program' equivalent: the program execution "starts" here
bool MyApp::OnInit()
{
// call the base class initialization method, currently it only parses a
// few common command-line options but it could be do more in the future
if ( !wxApp::OnInit() )
return false;
// create the main application window
MyFrame *frame = new MyFrame(_T("Minimal wxWidgets App"));
// and show it (the frames, unlike simple controls, are not shown when
// created initially)
frame->Show(true);
// success: wxApp::OnRun() will be called which will enter the main message
// loop and the application will run. If we returned false here, the
// application would exit immediately.
return true;
}
Если главное окно должно быть диалоговым, то создаем не фрейм, а диалог. Если кроме главного фрейма есть еще и диалоги, то так же динамически создаем и диалоги.
Затем по мере необходимости вызываем Show(true) для фрейма (понятно, что если фрейм главное окно, то показываем его сразу при запуске frame->Show(true); ) или же если для диалога, то ShowModal() или "НеМодал", то бишь просто Show().
Более подробно, все обовсем этом рассказывается тут:
http://docs.wxwidgets.org/stable/wx_helloworld.html
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Делаю так:
#include "Setup.h"
....
FormSetup *frame = new FormSetup(wxT("Minimal wxWidgets App"));
frame->Show(true);
При сборке пишет ошибку:
FrmPwd.cpp: In member function ‘virtual void FrmPass::m_bp_add_click(wxCommandEvent&)’:
FrmPwd.cpp:188: error: no matching function for call to ‘FormSetup::FormSetup(const wchar_t [22])’
Чего то не получается у меня .... что не правильно делаю, что понять не могу.
Уточняю. Мне нужно открыть окно настроек из главного окна.
#include "Setup.h"
....
FormSetup *frame = new FormSetup(wxT("Minimal wxWidgets App"));
frame->Show(true);
При сборке пишет ошибку:
FrmPwd.cpp: In member function ‘virtual void FrmPass::m_bp_add_click(wxCommandEvent&)’:
FrmPwd.cpp:188: error: no matching function for call to ‘FormSetup::FormSetup(const wchar_t [22])’
Чего то не получается у меня .... что не правильно делаю, что понять не могу.
Уточняю. Мне нужно открыть окно настроек из главного окна.
-
- Super wx Problem Solver
- Posts: 401
- Joined: Wed Sep 21, 2005 8:17 am
- Location: Rostov-on-Don, Southern Russia
midisa wrote:Делаю так:
#include "Setup.h"
....
FormSetup *frame = new FormSetup(wxT("Minimal wxWidgets App"));
frame->Show(true);
При сборке пишет ошибку:
FrmPwd.cpp: In member function ‘virtual void FrmPass::m_bp_add_click(wxCommandEvent&)’:
FrmPwd.cpp:188: error: no matching function for call to ‘FormSetup::FormSetup(const wchar_t [22])’
Чего то не получается у меня .... что не правильно делаю, что понять не могу.
Уточняю. Мне нужно открыть окно настроек из главного окна.
Окно настроек, как правило является диалогом, т.е. открыть нужно не другой фрейм а диалог.
Следовательно, сначала нужно объявить диалог а потом его вызвать через Show() или ShowModal()
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Вся моя проблема, что я не знаю английский язык и отказываюсь читать текст на английском языке.Mojo wrote:Окно настроек, как правило является диалогом, т.е. открыть нужно не другой фрейм а диалог.midisa wrote:Делаю так:
#include "Setup.h"
....
FormSetup *frame = new FormSetup(wxT("Minimal wxWidgets App"));
frame->Show(true);
При сборке пишет ошибку:
FrmPwd.cpp: In member function ‘virtual void FrmPass::m_bp_add_click(wxCommandEvent&)’:
FrmPwd.cpp:188: error: no matching function for call to ‘FormSetup::FormSetup(const wchar_t [22])’
Чего то не получается у меня .... что не правильно делаю, что понять не могу.
Уточняю. Мне нужно открыть окно настроек из главного окна.
Следовательно, сначала нужно объявить диалог а потом его вызвать через Show() или ShowModal()
После того как я внимательно посмотрел ошибку (вы ее тоже процитировали) строка 188, он говорит, что там нет ни какого текстового параметра. Он просит передать в функцию не текст, а идентификатор главного окна. т.к. мы отображаем модальное окно, то в качестве идентификатора можно передать NULL.
После этих простых операций все отлично пошло.
т.е. все было правильно, только нужно было убрать текст:
FormSetup *frame = new FormSetup(NULL);
frame->ShowModal();
или
frame->Show();
одинаково.