|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.01.2013, 22:50 | #1 |
Пользователь
Регистрация: 30.10.2012
Сообщений: 31
|
не могу разобраться с allocatehwnd
Почему я не могу отловить ни одного сообщения? Помогите пожалуйста!!!
Код:
|
27.01.2013, 02:46 | #2 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
Хм, дейсвитно...
Как минимум, должна выскочить ошибка на WM_CREATE при попытке писать в неоткрытый файл... Если только Message Only Window WM_CREATE не получает.. Что вряд ли. А как Вы сообщения для FWh посылаете? |
27.01.2013, 03:42 | #3 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
WM_CREATE окну конечно должно посылается, но только окно к тому моменту еще не имеет переназначенной оконной процедуры. Да и потом окно остается скрытым, какие сообщения оно будет получать?
Наверно можно убедиться так Код:
Последний раз редактировалось EUGY; 27.01.2013 в 03:51. |
27.01.2013, 04:03 | #4 |
Пользователь
Регистрация: 04.02.2009
Сообщений: 13
|
что именно нужно ловить?
Код:
|
27.01.2013, 04:11 | #5 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
|
27.01.2013, 06:18 | #6 | |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
Цитата:
А зачем тогда в функцию передается она? Наверное для того, чтобы зарегистрировать класс с нею. // впрочем, это флуд вокруг паскаля. Я на собственном опыте убедился, что с WinApi надо работать в VS на С++. Во-первых, потому что вся документация на С, во-вторых, пототому что все дефайны в студии уже определены, а в третьих - Дельфя широко использует какие-то странные неочевидности, типа самого верхнего, но всегда невидимого окна Application.. В данном случае - непонятно, куда втыкнуть вызов GetLastError(); Все, на чем могу строить догадки - если хендель не нулевой, значит окно создано. А если нулевой? Что там за ошибка? Код:
1. Сначала Вы создаете окно. (тут в дебаге смотрим на вернувшийся хендл.) 2. Оконная процедура отрабатывает все инициирующие месседжи. И замолкает. (Как-то уточнить, какая именно оконная процедура отрабатывается) 3. Запускается цикл сообщений. (запустился и ждет чего-то) 4. Никаких сообщений никто нигде никому не посылает. I.e. цикл сообщений ни разу не срабатывает. |
|
27.01.2013, 07:02 | #7 | ||
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Цитата:
Условно так Код:
Цитата:
Последний раз редактировалось EUGY; 27.01.2013 в 07:05. |
||
28.01.2013, 00:03 | #8 | ||
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
Цитата:
Цитата:
Все ли сообщения из другого треда попадают в очередь? А если цикл не запущен? |
||
28.01.2013, 13:39 | #9 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Если кратко и своими словами, то сообщения могут посылаться окну двумя способами SendMessage и PostMessage. В первом случае сообщение идет непосредственно в процедуру окна.
А во втором ставится в очередь и в процедуру окна оно попадет, только если главный цикл получит его и передаст дальше \DispatchMessage\. Если главного цикла нет, то конечно PostMessage бесполезен. А вообще функций для сообщений довольно много. Можно послать сообщение не окну, а просто из одного потока в другой \PostThreadMessage\. И получить его \GetMessage\. |
28.01.2013, 20:07 | #10 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
Вот почему PostMessage ничего не возвращает. Я-то раньше думал, что это просто защита от зависа чужого приложения.
А как и результат SendMessage получить и не ждать бесконечно ответа от зависшего приложения? Или Винда сама как-то это разруливает? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не могу разобраться с БД | Wladimir33 | Microsoft Office Access | 7 | 02.11.2012 11:41 |
Не могу разобраться! | romanov0303 | C++ Builder | 1 | 12.03.2012 10:48 |
не могу разобраться | navolo4ka | Qt и кроссплатформенное программирование С/С++ | 3 | 03.02.2012 14:01 |
не могу разобраться | Var17 | Общие вопросы Delphi | 6 | 27.03.2010 01:21 |
НЕ МОГУ РАЗОБРАТЬСЯ... | GSV84 | HTML и CSS | 0 | 03.02.2010 01:38 |