Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы


Листинг 3.7. Файл ddeml/ddemlcf.cpp


// ----------------------------------------------------- // Функции для работы с библиотекой DDEML // Клиент DDEML // ----------------------------------------------------- #define STRICT #include <windows.h> #include <windowsx.h> #include <ddeml.h> #include <dde.h> #include <mem.h> #include <string.h> #pragma hdrstop

#include "ddemlcl.hpp"

HDDEDATA EXPENTRY _export DDEClientCallback(WORD wType, WORD wFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, DWORD dwData1, DWORD dwData2);

// Идентификатор приложения для DDEML DWORD idInst;

// Функция обратного вызова для DDE FARPROC lpDdeProc;

HSZ hszService; HSZ hszTopic; HSZ hszItem;

HDDEDATA hData; DWORD dwResult; WORD wFmt = CF_TEXT;

//----------------------------------------------------- // Функция DDEClientOpen // Инициализация DDEML, создание идентификаторов строк //----------------------------------------------------- HCONV DDEClientOpen(HINSTANCE hInst, LPSTR szService, LPSTR szTopic, LPSTR szItem) { HCONV hConv = NULL;

// Создаем переходник для функции обратного вызова lpDdeProc = MakeProcInstance((FARPROC)DDEClientCallback, hInst);

// Инициализируем DDEML if(DdeInitialize((LPDWORD)&idInst, (PFNCALLBACK)lpDdeProc, APPCMD_CLIENTONLY, 0L)) { return NULL; } else { // При успешной инициализации создаем // идентификаторы строк для сервиса, раздела // и элемента данных hszService = DdeCreateStringHandle(idInst, szService, CP_WINANSI); hszTopic = DdeCreateStringHandle(idInst, szTopic, CP_WINANSI); hszItem = DdeCreateStringHandle(idInst, szItem, CP_WINANSI);

// Устанавливаем канал связи hConv = DdeConnect(idInst, hszService, hszTopic, (PCONVCONTEXT)NULL);

// Возвращаем идентификатор созданного канала связи return hConv; } }

//----------------------------------------------------- // Функция DDEClientClose // Завершение работы с библиотекой DDEML //----------------------------------------------------- void DDEClientClose(HCONV hConv) { // Закрываем канал связи if(hConv != NULL) { DdeDisconnect(hConv); hConv = NULL; }




Начало  Назад  Вперед



Книжный магазин