Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

как вызвать еще один диалог?

1.5K
27 сентября 2004 года
AndySPb
58 / / 11.04.2003
нужно чтоб по определенному событию (например по кнопке, это не важно) вызывался второй диалог, а первый соответственно закрывался. Я в проект добавляю его, а вот че дальше делать не понимаю. Может поможет кто?
492
27 сентября 2004 года
alibabaich
238 / / 08.07.2004
Цитата:
Originally posted by AndySPb
нужно чтоб по определенному событию (например по кнопке, это не важно) вызывался второй диалог, а первый соответственно закрывался. Я в проект добавляю его, а вот че дальше делать не понимаю. Может поможет кто?


Нет ничего проще... Вариант номер один... Если диалог больше не нужен...
Создать второй проект диалога и из первого:
CreateProcess(.......);
this->EndDialog();
Вариант второй:
Создать в ресурсах диалог, создать класс диалогового окна и:
CMyDialog d(this);
d.DoModal();
this->ShowWindow(SW_HIDE);

1.5K
29 сентября 2004 года
AndySPb
58 / / 11.04.2003
Спасибо!
А как потом по закрытию этого второго диалога снова сделать видимым первый?

this->CloseWindow();
а потом?
433
29 сентября 2004 года
AlexII
86 / / 13.10.2003
Цитата:
Originally posted by AndySPb
нужно чтоб по определенному событию (например по кнопке, это не важно) вызывался второй диалог, а первый соответственно закрывался. Я в проект добавляю его, а вот че дальше делать не понимаю. Может поможет кто?



Лучше используй не модальные диалоги(modeless dialog).

492
29 сентября 2004 года
alibabaich
238 / / 08.07.2004
Цитата:
Originally posted by AndySPb
Спасибо!
А как потом по закрытию этого второго диалога снова сделать видимым первый?

this->CloseWindow();
а потом?


Деструкторе закрываемого диалога:
this->m_pParentWnd->ShowWindow(SW_SHOW);

3
01 октября 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by alibabaich

Деструкторе закрываемого диалога:
this->m_pParentWnd->ShowWindow(SW_SHOW);



Объясни, зачем ты постоянно используешь this там, где можно обойтись без него?

1.5K
01 октября 2004 года
AndySPb
58 / / 11.04.2003
а как без него?
368
01 октября 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by AndySPb
а как без него?


Просто не пиши его. Если не задан область видимости, то он подразумевается.

Напр. внутри методов класса CDialog

CloseWindow(...), это эквивалент this->CloseWindow(...)
а
::CloseWindow(...), это уже Win32 API ф-ия.

492
04 октября 2004 года
alibabaich
238 / / 08.07.2004
Цитата:
Originally posted by rostyslav

Просто не пиши его. Если не задан область видимости, то он подразумевается.

Напр. внутри методов класса CDialog

CloseWindow(...), это эквивалент this->CloseWindow(...)
а
::CloseWindow(...), это уже Win32 API ф-ия.


Ну в принципе конечно по баробану, хоть this, хоть без, Только после this-> Выскакивает окошко со списком функций, как и при ::. Просто мне так удобней, меньше в синтаксисе ошибок...

6.3K
04 октября 2004 года
mefisto
26 / / 13.04.2004
Цитата:
Originally posted by alibabaich

Ну в принципе конечно по баробану, хоть this, хоть без, Только после this-> Выскакивает окошко со списком функций, как и при ::. Просто мне так удобней, меньше в синтаксисе ошибок...



Проще Ctrl+Space (в VC++ 6.0)
или Ctrl+J (.Net)

492
04 октября 2004 года
alibabaich
238 / / 08.07.2004
Цитата:
Originally posted by mefisto


Проще Ctrl+Space (в VC++ 6.0)
или Ctrl+J (.Net)


Спасибо, не знал...

3
04 октября 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by alibabaich

Нет ничего проще... Вариант номер один... Если диалог больше не нужен...
Создать второй проект диалога и из первого:
CreateProcess(.......);
this->EndDialog();
Вариант второй:
Создать в ресурсах диалог, создать класс диалогового окна и:
CMyDialog d(this);
d.DoModal();
this->ShowWindow(SW_HIDE);



А ты сам то пробовал сделать то, что рекомендуешь?
Дело в том, что вызывать ShowWindow(SW_HIDE) после DoModal() не имеет смысла. Это надо делать до.
Кроме того делать так:
this->m_pParentWnd->ShowWindow(SW_SHOW);
тоже нет смысла можно просто вызвать ShowWindow(SW_SHOW) после DoModal(). Это более корректно с точки зрения архитектуры, т.к. в этом случае лишь класс CMyDialog не связан с классом его вызывающим.

 
Код:
CMyDialog d(this);
ShowWindow(SW_HIDE);
d.DoModal();
ShowWindow(SW_SHOW);
492
04 октября 2004 года
alibabaich
238 / / 08.07.2004
Цитата:
Originally posted by Green


А ты сам то пробовал сделать то, что рекомендуешь?
Дело в том, что вызывать ShowWindow(SW_HIDE) после DoModal() не имеет смысла. Это надо делать до.
Кроме того делать так:
this->m_pParentWnd->ShowWindow(SW_SHOW);
тоже нет смысла можно просто вызвать ShowWindow(SW_SHOW) после DoModal(). Это более корректно с точки зрения архитектуры, т.к. в этом случае лишь класс CMyDialog не связан с классом его вызывающим.
 
Код:
CMyDialog d(this);
ShowWindow(SW_HIDE);
d.DoModal();
ShowWindow(SW_SHOW);


В принцепе согласен... Просто не пришло в голову... Я не думал о коректности, а хотел показать идею...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог