Вопрос № 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 Комментарий оценки: Спасибо за разъяснение