Полный исходный текст на языке C++ для библиотеки (DLL) с моделью блока, запускающего и останавливающего расчет по нажатию кнопки мыши, а также останавливающего расчет при поступлении сингала на вход блока.
// Запуск и остановка расчета #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 { // Получение доступа к функциям RDS if(!GetInterfaceFunctions()) RDS_SERV_ERROR_MSGW // Сообщение: старая версия RDS } return 1; } //========= Конец главной функции ========= // Блок, запускающий и останавливающий расчет extern "C" __declspec(dllexport) int RDSCALL StopCalc(int CallMode, RDS_PBLOCKDATA BlockData, LPVOID ExtParam) { switch(CallMode) { case RDS_BFM_MODEL: // Один такт расчета rdsStopCalc(); break; case RDS_BFM_MOUSEDOWN: // Нажатие кнопки мыши case RDS_BFM_SETUP: // Вызов функции настройки if(rdsCalcProcessIsRunning()) // Расчет сейчас запущен rdsStopCalc(); else // Расчет сейчас остановлен rdsStartCalc(); break; } return RDS_BFR_DONE; } //=========================================