Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) После загрузки 1С++ не работают другие компоненты (число прочтений - 6486 )
dfuy
Junior Member
**
Отсутствует



Сообщений: 41
Зарегистрирован: 18. Марта 2013
Re: После загрузки 1С++ не работают другие компоненты
Ответ #15 - 19. Марта 2013 :: 14:20
Печать  
Вот как теперь можно в несколько строк накатать компоненту, да еще и с наследованием:
Код
Выбрать все
#include "stdafx.h"
#include "../_mycommon/mycontimpl.hpp"

class CTest: public CContextImpl<CTest>
{
public:
BL_BEGIN_CONTEXT("Test", "Тест")
	BL_PROP_R(Test, "Тест") {Value="<prop>";}
	BL_FUNC(Func, "Функ", 0) {Value="<func>";}
BL_END_CONTEXT()
};
BL_INIT_CONTEXT(CTest);

class CTest2: public CContextImpl<CTest2, CCreateObject<CTest2>, CTest>
{
public:
BL_BEGIN_CONTEXT("Test2", "Тест2");
	BL_PROP_R(Test, "Тест")
		{Base::getTest(Value);
		Value=Value.GetString()+".<prop2>";}
BL_END_CONTEXT()
};
BL_INIT_CONTEXT(CTest2);

extern "C" int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
	if (dwReason==DLL_PROCESS_ATTACH) {
		DisableThreadLibraryCalls(hInstance);
		if (!Init1CGlobal()) return 0;
		CContextBase::InitAllContextClasses();
	} else if (dwReason==DLL_PROCESS_DETACH) {
		CContextBase::DoneAllContextClasses();
		Done1CGlobal();
	}
	return 1;
} 



результат работы:
Код
Выбрать все
ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"test.dll");

Тест=СоздатьОбъект("Тест");
Сообщить(Тест.Тест); // <prop>
Сообщить(Тест.Функ()); // <func>
Тест=СоздатьОбъект("Тест2");
Сообщить(Тест.Тест); // <prop>.<prop2>
Сообщить(Тест.Функ()); // <func> 


  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать