|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,637
|
||||||||||||||||
Петзольд. Тема DDE-(Dynamic Data Exchange)03.11.2023, 16:35. Показов 10301. Ответов 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,637
|
||||||||
| 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,637
|
|||
| 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,637
|
||||||
| 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,637
|
||||||||||||
| 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,637
|
|||||
| 12.11.2023, 12:09 [ТС] | |||||
|
Добавлено через 2 минуты
0
|
|||||
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
|
|
| 12.11.2023, 14:56 | |
|
Troll29,
В любой книжке информация стилизована под время написания оной. Под условия автора - IDE... опер. система. Это всё надо понимать и переводить под реальные условия.
0
|
|
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 12.11.2023, 15:39 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Вот winApi.
А отнюдь не то дерьмо, которое вы от куда то выворачиваете. Надеюсь с вашей начитанностью, вам будет не трудно разобрать то, что я навставлял.
Работа с процессами....
РАБОТАТЬ НАДО
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,243
|
|
| 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,637
|
|||||
| 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,637
|
||
| 14.11.2023, 12:27 [ТС] | ||
|
DDEPOP1.rar
1
|
||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,637
|
|
| 14.11.2023, 12:44 [ТС] | |
|
politoto
Как вы думаете, всё же, почему в одной операционной системе приложение работает, а в другой, более современной, нет? Windows XP - работает, с любыми флагами, а Windows 10, нет, мне кажется, что это означает, что код написан верно, за исключением некоторых мелочей связанных с упаковкой-распаковкой данных, но в чём тогда дело, безопасность, скорость..., что?
0
|
|
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,637
|
|||||||||||||||||
| 14.11.2023, 14:03 [ТС] | |||||||||||||||||
|
Добавлено через 8 минут DDEPOP1.C
DDEPOP1.H
DDEPOP1.RC
1
|
|||||||||||||||||
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,637
|
|||||||||||
| 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 и Множество коллекций Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного.
1. Почему показания термометра заряжены целью?
Цель заложена в самом. . .
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
По ссылке 403. Не очень информативно такую ссылку постить.
Запись от Usaga размещена Сегодня в 06:46 . . .
|
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|