|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
||||||||||||||||
Петзольд. Тема DDE-(Dynamic Data Exchange)03.11.2023, 16:35. Показов 10299. Ответов 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 |
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
||||||||
| 12.11.2023, 00:33 [ТС] | ||||||||
|
hDdeAdvise = GlobalAlloc(GHN, sizeof(DDEADVISE)); или просто hDdeAdvise = GlobalAlloc(GMEM_MOVEABLE sizeof(DDEADVISE));...
0
|
||||||||
|
Модератор
|
||||||||
| 12.11.2023, 07:21 | ||||||||
|
Добавлено через 4 часа 17 минут Liss29, если начать с чего-нибудь по-проще и понятнее, сможете создать папки в меню "Пуск" с помощью DDEML? Что-нибудь вроде
0
|
||||||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
|||
| 12.11.2023, 08:15 [ТС] | |||
|
0
|
|||
|
Модератор
|
|||
| 12.11.2023, 09:46 | |||
|
Автор что-то зачем-то подправил в примере из предыдущих изданий книги для 16-разрядной Windows (без DDEML), Вы что-то подправили, возможно, переводчик что-то подправил, если Вы брали не исходный вариант. Какие-то исправления были в Microsoft KB, какие-то на официальном сайте книги, какие-то на других сайтах с разбором ошибок by Charles Petzold... И мне не совсем ясно, какой правильный должен быть результат работы этих видоизменённых примеров. Внутренняя реализация DDE в Win32 такая, какая она есть, только для того, чтобы сохранилась работоспособность 16-разрядных клиентов и серверов DDE, работающих в 16-разрядной подсистеме 32-разрядной Windows и взаимодействующих с 32-разрядными клиентами и серверами, в том числе с Проводником.Если Вам ясно, как это должно работать, и как это протеститровать, и Вы хотите модернизировать старый пример без DDEML, то возможно, Вам лучше взять исходный 16-разрядный вариант из старых изданий. Programming Windows "3.0" (1990, 2-е издание) https://www.charlespetzold.com/src/ProgWin30.zip \CHAP17\DDEPOP.C Programming Windows "3.1" (1992, 3-е издание) https://www.charlespetzold.com/src/ProgWin31.zip \CHAP17\DDEPOP1.CОткрыть окошко с исходником с официального сайта автора, открыть окошко с https://learn.microsoft.com/en... a-exchange , и окошко со своим модернизированным сервером, и, сверяясь с официальной документацей, сделать свой аналог. То, что функции и сообщения называются одинаково, совсем не значит что они одинаково работают, как Вы понимаете . Может быть, на RSDN, если он ещё жив, найдёте лучший человечный перевод статей из MSJ и KB по заинтересовавшей Вас теме.
0
|
|||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
||||||
| 12.11.2023, 10:42 [ТС] | ||||||
|
Например, зачем в программе сервер создаётся второе окно и, соответственно, вторая процедура, почему нельзя принимать и обрабатывать сообщения в процедуре основного окна, что-то не могу уловить мысль автора.
0
|
||||||
|
Модератор
|
|||
| 12.11.2023, 11:18 | |||
![]() Пока настраиваетесь, можете поискать перевод одной из первых статей по раннему варианту DDE (страница 7) https://archive.org/download/m... 986-10.pdf DDEML вообще прячет служебное окно для обработки сообщений DDE от пользователя, и самому явно создавать его не нужно.
0
|
|||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
||||||||||||
| 12.11.2023, 11:33 [ТС] | ||||||||||||
|
Как вы думаете, нужно ли в сообщении клиента (SHOWPOP1) WM_USER_INITIATE в цикле выделять память для структуры DDEADVISE, не жирно ли? Или, всё же, это необходимость. Возможно, ошибка здесь, хотя я ставил проверки дескриптора и указателя на равенство нулю и ни одного MessageBox не получил.
сообщение WM_USER_INITIATE это:
процедурой ServerProc1. Если серверов будет два, то добавится ещё одно окно с процедурой ServerProc2 и.т.д. или это чушь полная?
0
|
||||||||||||
|
Модератор
|
||
| 12.11.2023, 12:01 | ||
|
Когда окно не видно, и оно не обрабатывает сообщения ни от мышки, ни от клавиатуры, то как-то спокойнее за его целостность. Добавлено через 7 минут Проще всего отказывать в обслуживании новым клиентам, пока текущий не завершил свой сеанс. А что будет с сервером из книжки, если к нему подключатся два клиента?
0
|
||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
|||||
| 12.11.2023, 12:09 [ТС] | |||||
|
Добавлено через 2 минуты
0
|
|||||
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,231
|
|
| 12.11.2023, 14:56 | |
|
Troll29,
В любой книжке информация стилизована под время написания оной. Под условия автора - IDE... опер. система. Это всё надо понимать и переводить под реальные условия.
0
|
|
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,231
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 12.11.2023, 15:39 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Вот winApi.
А отнюдь не то дерьмо, которое вы от куда то выворачиваете. Надеюсь с вашей начитанностью, вам будет не трудно разобрать то, что я навставлял.
Работа с процессами....
РАБОТАТЬ НАДО
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,231
|
|
| 12.11.2023, 15:42 | |
|
0
|
|
|
Модератор
|
||||||||
| 13.11.2023, 07:58 | ||||||||
wStatus побитово соответствует DdeAck.В с++ 20 есть std::bit_cast, а универсальный способ - что-то вроде
Добавлено через 14 минут А то, что у Вас есть свои мысли о том, что можно сделать и по-другому, это ли не начало понимания сути? Освоить суть можно в результате собственноручных экспериментов и собственного творчества. Попробуйте сделать по-своему, и тогда у Вас возникнут настоящие вопросы, а не гадание неизвестно о чём.
0
|
||||||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
|||||
| 14.11.2023, 10:08 [ТС] | |||||
|
В общем я добился того что программа заработала, но пришлось изменить значение поля fAckReq структуры pDdeAdvise в сообщении WM_USER_INITIATE приложения клиента. Первоначально у автора это значение установлено в TRUE, что требует подтверждения от клиента получения данных, если изменить этот флаг на FALSE, то всё работает как надо, кроме математических вычислений, но суть в том, как утверждает автор и в чём я убедился сам, что если задать полу fAckReq структуры pDdeAdvise значения FALSE т.е. не нужно отвечать серверу получил клиент данные или нет, и при этом изменить системное время, то сервер отправит сразу 52 сообщения WM_DDE_DATA, что приводит к переполнению очереди сообщений, вот цитата:
Добавлено через 13 минут Не по теме:
Добавлено через 10 минут
1
|
|||||
|
Модератор
|
||
| 14.11.2023, 11:53 | ||
|
Вдруг кому-нибудь ещё захочется заняться таким программированием по ретроучебникам.
1
|
||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
||
| 14.11.2023, 12:27 [ТС] | ||
|
DDEPOP1.rar
1
|
||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
|
| 14.11.2023, 12:44 [ТС] | |
|
politoto
Как вы думаете, всё же, почему в одной операционной системе приложение работает, а в другой, более современной, нет? Windows XP - работает, с любыми флагами, а Windows 10, нет, мне кажется, что это означает, что код написан верно, за исключением некоторых мелочей связанных с упаковкой-распаковкой данных, но в чём тогда дело, безопасность, скорость..., что?
0
|
|
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
|||||||||||||||||
| 14.11.2023, 14:03 [ТС] | |||||||||||||||||
|
Добавлено через 8 минут DDEPOP1.C
DDEPOP1.H
DDEPOP1.RC
1
|
|||||||||||||||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,633
|
|||||||||||
| 14.11.2023, 14:03 [ТС] | |||||||||||
|
SHOWPOP1.C
SHOWPOP1.H
1
|
|||||||||||
| 14.11.2023, 14:03 | |
|
Нужны примеры по Dynamic Data Display Как нарисовать график в Dynamic Data Display не поддерживается тип контекста в Dynamic Data на VS2012 Нужен дистрибутив Active Reports Data Dynamic [WPF] Dynamic Data Display и Множество коллекций Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|