![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
Вот здесь я хочу получить текст из диалога! Как это сделать? |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
а ты чего сделал в строке 6 ?
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
Так нельзя у меня тут нету HWND для диалога. Он есть толко в процедуре диалога. А как из нее поднять его значение сюда не использоя глобальную переменную.
Вобщем мне нужен пример CreateDIalog и процедуры для него! Это сообщение отредактировал(а) dark_religion - 3.12.2008, 11:26 |
|||
|
||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
Как выйти из этого цыкла?
while ((GetMessage(&msg, mWnd, 0, 0)) != 0) { if (!IsDialogMessage(mWnd, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } Какое именно нужно сообщение послать? |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 8 Всего: 154 |
WM_QUIT
Это сообщение отредактировал(а) Lazin - 3.12.2008, 12:58 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
легально - в программе вызвать PostQuitMessage(S_OK) S_OK - все ок, если не все, значит писать сюда код ошибки -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
Я понимаю что WM_QUIT как его послать я шлю не останавливается(
Это сообщение отредактировал(а) dark_religion - 3.12.2008, 13:34 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
EndDialog легальна, только если диалог показывается с помощью одной из функций набора DialogBox, они уже имеют цикл сообщений
WM_QUIT нельзя посылать непосредственно в оконную процедуру, ты получается иребуешь выйти из программы прежде, чем она выполнит все рекурсивные вызовы чтобы программа действительно завершилась, WM_QUIT должна стоять последней в очереди сообщений, что и реализует PostQuitMessage если уж та хочется поиграться, вызывай в PostMessage, но это все равно неправильно -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
Я вообще не хочу завершать программу, я хочу что бы этот цикл закончился, и продолжилось выполнение других задач. а он у меня безконечный и я не знаю как из него выйти!
Вообще проблема в том что когда я вызываю CreateDialog диалог создается и сразу становится неактивным, оно не ждет пока я введу в нем что-то! И все заканчивается) А если я добавляю такой цикл, как показанно в коде то оно из него никогда не выходит, что мне нужно сделать? Это сообщение отредактировал(а) dark_religion - 3.12.2008, 14:07 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
кстати, если у тебя в проекте имеется только одно окно, то это нормально, но если буден несколько, то GetMessage их будет игнорировать чтобы отвязаться от конкретного окна, убери mWnd
Добавлено @ 16:10 тогда и IsDialogMessage - так же нужно отвязать от mWnd
хотя это будет не совсем верно, поскольку вместо msg.hwnd IsDialogMessage, по идее, ждет основное, родительское, или диалоговое окошко, а тут будут передаваться все подряд окна проекта Это сообщение отредактировал(а) GremlinProg - 3.12.2008, 16:17 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
А если будет несколько окон, то как оно будет определять с какого получено сообщение если будет нул?
PostQuitMessage(S_OK); помогло! Но остается вопрос на счет как оно будет различать несколько окон! Это сообщение отредактировал(а) dark_religion - 3.12.2008, 16:27 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
PostMessage и SendMessage - неправильно
PostQuitMessage - правильно -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
Спасибо всем!!!
|
|||
|
||||
| GremlinProg |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
а пусть так и остается, поскольку явных запретов на использование IsDialogMessage нет:
Добавлено через 3 минуты и 59 секунд я просто сделал намек на то, что тут можно немного соптимизировать, если в первый параметр передавать только дескриптор диалога Добавлено через 8 минут и 18 секунд
msg.hwnd - это и есть окно, которому пришло сообщение из GetMessage просто второй параметр GetMessage - тот же фильтр, работающий как и 3-4 параметры: если 0 - то работать со всеми окнами, иначе - только с указанным окном -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||||
|
|||||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |