Полный исходный текст модели блока на языке C++. В этом примере создается и уничтожается личная область данных блока.
#include <windows.h> #include <RdsDef.h> // Подготовка описаний сервисных функций #define RDS_SERV_FUNC_BODY GetInterfaceFunctions #include <RdsFunc.h> //========== Главная функция DLL ========== int WINAPI DllMain(HINSTANCE /*hinst*/, unsigned long reason, void* /*lpReserved*/) { if(reason==DLL_PROCESS_ATTACH) // Загрузка DLL { // Получение доступа к функциям if(!GetInterfaceFunctions()) RDS_SERV_ERROR_MSGW // Сообщение: старая версия RDS } return 1; } //========= Конец главной функции ========= //====== Класс личной области данных ====== class TTest1Data { public: int IParam; // Целый параметр double DParam; // Вещественный параметр TTest1Data(void) // Конструктор класса { IParam=0; DParam=0.0; rdsMessageBoxW(L"Область создана",L"TTest1Data",MB_OK); }; ~TTest1Data() // Деструктор класса { rdsMessageBoxW(L"Область удалена",L"TTest1Data",MB_OK);}; }; //========================================= //============= Модель блока ============== extern "C" __declspec(dllexport) int RDSCALL Test1(int CallMode, RDS_PBLOCKDATA BlockData, LPVOID ExtParam) { TTest1Data *data; switch(CallMode) { case RDS_BFM_INIT: // Инициализация BlockData->BlockData=new TTest1Data(); break; case RDS_BFM_CLEANUP: // Очистка data=(TTest1Data*)(BlockData->BlockData); delete data; break; } return RDS_BFR_DONE; } //=========================================