Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 288
от 09.08.2006, 10:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 341, Экспертов: 25
В номере:Вопросов: 1, Ответов: 3


Вопрос № 51022: Уважаемые эксперты! Очень интересует вопрос: как выйти из диалога? Думаю PostQuitMessage не подходит, а другие варианты в голову не приходят......

Вопрос № 51.022
Уважаемые эксперты!
Очень интересует вопрос: как выйти из диалога?
Думаю PostQuitMessage не подходит, а другие варианты в голову не приходят...
Отправлен: 03.08.2006, 12:34
Вопрос задал: Slin (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: gitter
Здравствуйте, Slin!
Функция EndDialog должна Вам помочь (для модального окна).
Или же вызвать функцию SendMessage с сообщением WM_CLOSE

Удачи!
Ответ отправил: gitter (статус: Студент)
Ответ отправлен: 03.08.2006, 12:51
Оценка за ответ: 5
Комментарий оценки:
То, что надо!
Как я понял, в случае с WM_CLOSE из процедуры диалога нужно возвращать false

Отвечает: Jadd
Здравствуйте, Slin!
BOOL CloseWindow(HWND hWnd); - вместо hWnd хэндл диалога. - как вариант.

Удачи.

---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал)
Адрес: Санкт-Петербург
WWW: http://www.sport-diary.ru
ICQ: 28260749
----
Ответ отправлен: 03.08.2006, 12:55
Оценка за ответ: 4
Комментарий оценки:
не пойдет. CloseWindow лишь минимизирует окно, а не уничтожает его. К тому же у меня модальный диалог...

Отвечает: Physicist
Здравствуйте, Slin!

Для модальных диалогов нужно использовать функцию
BOOL EndDialog( HWND hDlg, INT_PTR nResult );
Для модального окна никаких WM_CLOSE не нужно. В MSDN написано:
Dialog boxes, созданные функциями DialogBox, DialogBoxParam, DialogBoxIndirect, или DialogBoxIndirectParam должны быть уничтожены функцией EndDialog.

Для немодальных (modeless) диалогов, созданных функциями CreateDialog или CreateDialogIndirect нужно использовать функцию
BOOL DestroyWindow( HWND hWnd );
которая "сама" посылает WM_DESTROY и WM_NCDESTROY. Обычно этот вызов делается в обработчике WM_CLOSE, поэтому в большинстве случаев посылки этого сообщения достаточно.
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 03.08.2006, 13:01
Оценка за ответ: 5
Комментарий оценки:
Спасибо за разъяснение


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное