|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,638
|
||||||||||||||||
Петзольд. Тема DDE-(Dynamic Data Exchange)03.11.2023, 16:35. Показов 11033. Ответов 93
Здравствуйте! Не хочет работать программа из книги Петзольда. Тема, Dynamic Data Exchange, если честно, то саму тему не понял, соответственно, и ошибку найти не могу. Вот код:
Когда запускаю клиента, то бывает, что одно значение, численность штата меняется, а следом ошибка Failure on WM_DDE_ADVISE!, не знаю в чём дело. Тут нужно выложит ещё и файлы ресурсов, но тогда когда будет совсем уж много, возможно, что кто-нибудь в теме разбирается и поможет, код то простой, если понимаешь что к чему, но если нужно выложу все файлы. DDEPOP1 - Это сервер. SHOWPOP1 - Это клиент. DDEPOP1
SHOWPOP1
В этом участке кода ошибка: Кликните здесь для просмотра всего текста
0
|
||||||||||||||||
| 03.11.2023, 16:35 | |
|
Ответы с готовыми решениями:
93
Чем заменить Dynamic Data Exchange (DDE) из VB6 научите пользоваться Dynamic Data Display Отображение графика в Dynamic Data Display |
|
Модератор
|
||||
| 17.11.2023, 09:04 | ||||
|
Не по теме:
Картинка попытки использования DDE из соцсети microsoft Добавлено через 1 час 15 минут Это зачем в сервере? CF_TEXT.Диагностические сообщения можно сохранять в файл, лог отладчика( OutputDebugString()), журнал или присоединить windows console и писать туда.
0
|
||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,638
|
||
| 17.11.2023, 15:30 [ТС] | ||
0
|
||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,638
|
|||||||
| 18.11.2023, 11:44 [ТС] | |||||||
|
В сообщении WM_DDE_ACK нужно определить вовремя ли пришло сообщение, попадает ли оно во временной интервал, если да, то проверить поле fAck структуры DDEACK, если ложь, то оповестить пользователя о том, что что-то пошло не так, если fAck истинно, то тут..., в WM_USER_INITIATE, если поле fAck истинно, то в этом сообщении вызывается в цикле PeekMessage с целью выявить сообщения DDE из диапазона, следом за подтверждением DDEACK должно прийти сообщение WM_DDE_DATA, так что его и ждёт это цикл, я так думаю, соответственно, если цикл задержки и обработки структуры DDEACK убран, то и этот цикл так же оттуда удалён, нужен ли он здесь вообще?
0
|
|||||||
|
Модератор
|
|||||
| 18.11.2023, 21:47 | |||||
|
Добавлено через 2 часа 34 минуты WndProc(), вызывается DispatchMessage(), который, в свою очередь, вызывает WndProc() для обработки сообщений единственного окна приложения-клиента. В рекурсивном вызове WndProc() нет ничего необычного, но здесь в этом нет необходимости. Он был нужен, потому что сервер мог ждать обработки сообщений, поставленных в очередь клиента, до завершения обработчика WM_USER_INITIATE, который в примере вызывается до начала основного цикла сообщений:
1
|
|||||
|
Модератор
|
||
| 18.11.2023, 22:05 | ||
|
Поставить себе напоминалку на DDE_TIMEOUT и уйти пить кофе: обрабатывать в основном цикле текущие сообщения, и регистрировать приходящие в очередь WM_DDE_ACK от сервера, управляя ресурсами так, как это описано в документации DDE. По истечении DDE_TIMEOUT проверить, если ли запросы, на которые ещё не поступили подтверждения от сервера.Если пользователь сможет в любой момент добавлять и управлять DDE-ссылками на внешние данные, то, конечно, отслеживать состояние ссылок и в целом "бесед"( conversation) с серверами нужно будет отдельно для каждой ссылки.
1
|
||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,638
|
|||||||
| 19.11.2023, 11:05 [ТС] | |||||||
|
Кликните здесь для просмотра всего текста
0
|
|||||||
|
Модератор
|
|||||||
| 19.11.2023, 21:41 | |||||||
//ERROR MESSAGE дело не дойдёт, если после dwTime + DDE_TIMEOUT так и не придёт ни одного WM_DDE_ACK.Регистрация сообщений должна работать. Если хотите обрабатывать сообщения вне WndProc(), нужно проверять, кому (и от кого) сообщение. Для WM_DDE_ACK нужно анализировать статус, так как сообщение может быть и отказом.Регистрацию подтверждений подписки можно также перенести в обработчик WM_DDE_ACK в WndProc()
0
|
|||||||
|
Отпрыск ChatGPT
266 / 31 / 4
Регистрация: 18.06.2019
Сообщений: 155
|
|
| 20.11.2023, 00:04 | |
|
DDE в 2023 (эмодзи черепа)
Добавлено через 2 минуты Вон в ссылке повыше в теме Реймонд Чен сказал, дде всё с 1997. Добавлено через 1 минуту Вы некромант?
0
|
|
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,638
|
|||||||||||
| 20.11.2023, 00:31 [ТС] | |||||||||||
0
|
|||||||||||
|
Модератор
|
||||||||||||||||||||||||||||
| 20.11.2023, 08:47 | ||||||||||||||||||||||||||||
Если, например, из GetMessage() вообще не придёт ни одного WM_DDE_ACK, то это никогда не выполнится:
Если, например, из GetMessage() вообще не придёт ни одного WM_DDE_ACK, то это никогда не выполнится:
TRUE==InSendMessage() внутри WndProc() означает, что обрабатывается сообщение "вне очереди" из других потоков( и процессов), отправленное с помощью SendMessage()https://learn.microsoft.com/ru... endmessage
0
|
||||||||||||||||||||||||||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,638
|
|||||||||||||
| 20.11.2023, 13:40 [ТС] | |||||||||||||
0
|
|||||||||||||
|
Модератор
|
|||||||
| 20.11.2023, 14:02 | |||||||
WndProc(), где уже проверены все условияФрагмент обработчика WM_DDE_ACK в WndProc():
dwCountOfMessagesDdeAck
0
|
|||||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,638
|
||||||||
| 20.11.2023, 15:39 [ТС] | ||||||||
|
Что за условие такое мудрёное оно не противоречит само себе.
А что с другими сообщениями в которых так же требуется задержка, например, WM_CLOSE? Хотя не совсем понятно зачем там нужна задержка, если время задержки истечёт или сообщение придёт, не важно, результат тот же.
0
|
||||||||
|
Модератор
|
|||||||
| 20.11.2023, 15:50 | |||||||
|
Должно быть
0
|
|||||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,638
|
|
| 20.11.2023, 16:08 [ТС] | |
|
В приложении сервере тоже самое нужно проделать WM_DDE_ACK через основной цикл сообщений получать?
0
|
|
|
Модератор
|
|
| 20.11.2023, 19:07 | |
|
Да, надо как-то избежать блокирования, если клиент попросил в
pDdeAdvise->fAckReq отправлять данные с подтверждением. В сервере уже есть таймер, можно сделать его почаще и проверять, не истёк ли срок ожидания WWW_DDE_ACK от клиента в ответ на WM_DDE_DATA.И убрать MessageBox'ы из ServerProc()
0
|
|
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,638
|
|||
| 21.11.2023, 09:53 [ТС] | |||
|
0
|
|||
|
Модератор
|
|||
| 21.11.2023, 11:12 | |||
PostMessage(). А на какое ещё сообщение клиент может ответить серверу PostMessage() WM_DDE_ACK?https://learn.microsoft.com/ru... wm-dde-ack Если атом именно тот, для которого мы ждали подтверждения приёма данных, и ACK не отрицательный, то выполняем GlobalFree(), если это необходимо, и считаем, что клиент готов принимать новые данные.https://learn.microsoft.com/ru... m-dde-data
0
|
|||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,638
|
||||
| 21.11.2023, 12:24 [ТС] | ||||
|
В данном случае я не знаю, как это реализовать, это, видимо, нужно переписать всю функцию ServerProc, думаю, вызовы функции PostDataMessage нужно убрать из сообщения WM_DDE_ADVISE, иначе, как организовать задержку отправки сообщения WM_DDE_DATA. Затем в сообщении WM_DDE_ACK, если проверка атома и флага fAck структуры DDEACK даст положительный результат, вызвать PostDataMessage, но тогда на что клиент должен отвечать, если данные ему не были отправлены из сообщения WM_DDE_ADVISE.... ну и так далее.
0
|
||||
| 21.11.2023, 12:24 | |
|
Нужны примеры по Dynamic Data Display Как нарисовать график в Dynamic Data Display не поддерживается тип контекста в Dynamic Data на VS2012 Нужен дистрибутив Active Reports Data Dynamic [WPF] Dynamic Data Display и Множество коллекций Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе.
Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I
Обработка содержит реквизиты:
-. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|