По прежнему хочется увидеть рабочий пример. Заранее спасибо!!!!
Отправил.
Большое спасибо.
Так как обсуждаемый функционал в плагинах по прежнему нужен я снова с проблемой.
Присланный исходник не удалось собрать но это не совсем важно что бы отсечь лишнее я выделил с него только то что касается взаимодействия плагина с отчетами.
#include "stdafx.h"
#include "BBPlugin.h"
#include <stdlib.h>
#include <TCHAR.H>
#include <windows.h>
#ifdef _MANAGED
#pragma managed(push, off)
#endif
HMODULE hMyModule;
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
hMyModule = hModule;
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
bool IsActive;
HWND MyDialog;
TPointLL LastMapPoint;
BBPLUGIN_API char PluginCaption[] = "Test Report";
_TPluginsEvent *PluginsEvent;
LPCalcReportVar OldOnCalcReportVar;
int MyReportVar1, MyReportVar2;
double MyCalcReportVar(int ReportVarID, int IndexFrom, int IndexTo, char* &ValueS);
BBPLUGIN_API void InitBBPlugin(_TPluginsEvent *param)
{
//Проверяем версию движка
int Version = param->GetVersion();
if ((Version / 1000 != MajorVersion) || //Плагины не совместимы с разными MajorVersion
(Version % 1000 < MinorVersion)) //Но совместимы вверх в пределах одинаковой MajorVersion
{
MessageBox(NULL,_T("Incorrect Plugin engine version"), _T("Error"), MB_OK | MB_ICONERROR);
return;
}
MyReportVar1 = param->PluginReportFunction->AddReportVar("PluginVar","Это переменная из плагина");
MyReportVar2 = param->PluginReportFunction->AddReportVar("PluginVar2","Это тоже переменная из плагина");
OldOnCalcReportVar = param->PluginReportFunction->OnCalcReportVar;
param->PluginReportFunction->OnCalcReportVar = MyCalcReportVar;
}
double MyCalcReportVar(int ReportVarID, int IndexFrom, int IndexTo, char* &ValueS)
{
if (ReportVarID == MyReportVar1){
return IndexFrom;
} else if (ReportVarID == MyReportVar2){
ValueS = (char*) PluginsEvent->PluginUtilsFinctions->LIGetMemory(100);
strcpy(ValueS,"!!!!!!!!");
return 0;
} else if (OldOnCalcReportVar) return OldOnCalcReportVar(ReportVarID, IndexFrom, IndexTo,ValueS);
return 0;
}
Для проверки был взят стандартный шаблон отчетов который идет в качестве примера .
Выбираем для отображения в отчете идентификаторов
вложение 1и смотрим результат
вложение 2отлично пробуем другую переименую
вложение 3но тут нас постигает неудача
вложение 4Пытаемся создать краш репорт и снова не судьба
https://docs.google.com/open?id=0ByJyzZfBvkF_VHhZWWZjb2V4eVkВсе действия проводились под следующей версией
https://docs.google.com/open?id=0ByJyzZfBvkF_aS1CcmYySzFtNWMНу вот вроде ситуацию описал.
И прошу вашей помощь или содействия или указания на мою ошибку или не знание предметной области. Одним словом помогите!!!!!!!!!!!!