RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : OS/2-DDE-WINOS/2


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Dmitry Ban
To : Igor Vashkevich
Subj : OS/2-DDE-WINOS/2

> /*****************
> Вот это и есть злополучный запрос, на который нет ответа. Я пытался передать имя Item как атом (это, вроде бы соответствует мелкомягкому механизму) - результат тот же!
> ******************/
> case IDM_DATA : {
>
> DDESTRUCT *buf;
>
> DosAllocSharedMem(&buf, NULL, sizeof(DDESTRUCT) + 31,
> PAG_COMMIT | PAG_WRITE | OBJ_GIVEABLE | OBJ_TILE);
> DosGiveSharedMem(buf, Server[0].tid,
> PAG_WRITE | PAG_READ | PAG_COMMIT);
> buf->usFormat = DDEFMT_TEXT;
> buf->fsStatus = 0;
> buf->offszItemName = sizeof(DDESTRUCT);
> strcpy((char *)(buf + buf->offszItemName), "SysItems");
> buf->cbData = 0;
>
> WinDdePostMsg(Server[0].hwnd, hwnd, WM_DDE_REQUEST,
> (MPARAM)buf, DDEPM_RETRY);
> break;
> }
> }
> break;
> }

Насколько я смог разобраться в своём застарелом коде, память для передачи данных должен аллоцировать сервер, а вот высвобождать её должен клиент. А Item действительно передаётся как атом. Т.е. виндовый сервер ожидает получить сообщение wm_DDE_Request с lparam MakeLong(cf_Text, aItem)

Mon 03 Dec 2001 18:39 Mozilla/4.61 [en] (OS/2; I) via Smart Cache 0.40




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.