Страница: 1 |
Страница: 1 |
Вопрос: Возврат управления
Добавлено: 10.07.04 15:56
Автор вопроса: EROS
Парни, вот такая проблема...
К примеру имеется несколько форм с накладными и одна форма для работы с товаром. В этой форме юзер удаляет какой-либо товар или меняет цену и т.д., а он уже выдан в накладной.. Я пошел по следующему пути:
- При измении в товаре я через SendMessage рассылаю всем формам в MDI-приложение предварительно зарегестрированное сообщение.
- Форма его отлавливает и вносит измения(переданные в сообщении) в накладную
Проблема заключается в том, что прога зависает,пока все накладные не обработают полученное сообщение.Другими словами управление не возвращается до окончания обработки сообщения другими формами..
Возможно ли сделать так чтобы накладные обрабатывали сообщение в фоновом режиме, т.е. без захвата управления?
Возможно надо использовать PostMessage? Но каков тогда порядок обработки полученных сообщений формой?
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 10.07.04 16:30
Попробуй Пост... возможно и подойдет... правда лишь только при условии, что ты в качестве lParam не передаешь каких-нибудь данных, например UDT или ссылку на массив...
Т.к. в этом случае массив может быть уничтожен еще до окончания работы с ним других процедур...
Тут бы в самый раз запустить кол-во потоков равное кол-ву форм... на каждую по потоку... но т.к. это невозможно, стоит попробовать ПостМессадж...
Номер ответа: 2
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #2
Добавлено: 10.07.04 17:01
SendMessage передает сообщение в оконную процедуру немедленно и не возвращается, пока сообщение не обработано. Сообщение обрабатывается сразу, остальные сообщения в очереди отодвигаются на потом. PostMessage передает сообщение в конец очереди сообщений и возвращается не ожидая, пока твоё сообщение будет обработано. В этом случае сообщение будет обработано только когда до него дойдёт очередь.
Номер ответа: 3
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #3
Добавлено: 10.07.04 17:58
sne:
В lParam я планирую передавать значение Long(ID изменённого товара)..
Надеюсь, с ним ничего не случиться? В SendMessage этот вариант отлично работает.
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 10.07.04 18:18
Если товар для всех один, и это значение меняться не будет, то должно быть все впорядке...
по-идее...
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 11.07.04 03:31
sne:
А почему потоки не реальны?? В VB6 с этим трудности?
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 11.07.04 03:37
небольшие