Стартовая функция
Основной задачей стартовой функции является запуск процесса регистрации remoting-объекта.
Стартовая функция реализуется на управляемом коде в рамках старого проекта, но она должна вызываться из неуправляемого кода - из точки регистрации remoting-объекта. Чтобы не нарушать старый проект, код стартовой функции разместим в отдельном модуле (файлы StarterRmt.h и StarterRmt.cpp). В h-файле StarterRmt.h будут присутствовать #include только неуправляемых модулей (описание класса методов бизнес-логики из старого приложения на неуправляемом коде), а управляемые модули (h-файлы управляемого класса-обертки и «Класса регистрации remoting-объекта») будут подключены уже в cpp-файле. В итоге код стартовой функции на С++/CLI в рассматриваемом примере будет иметь такой вид:
// StarterRMT.h // стартовая функция #include "MFC_2Dlg.h" //описание бизнес-логики //Стартовая функция. Входной параметр - существующий объект бизнес-логики void StarterRMT(CMFC_2Dlg* pDialog);
//StarterRMT.cpp // стартовая функция #include "StarterRMT.h" #include "mngCover.h" //Управляемый класс-обертка для неуправляемых методов #include "Rmt_reg.h" //Класс регистрации remoting-объекта //Стартовая функция. Входной параметр - существующий объект бизнес-логики void StarterRMT (CMFC_2Dlg* pDialog) { //Управляемый класс-обертка для неуправляемых методов CMngCover^ mm_MngCover; //описание mm_MngCover = gcnew CMngCover(pDialog); //создание //класс регистрации и иницилизации remoting-объекта Rmt_reg::CRmtReg^ mm_RmtReg; //описание mm_RmtReg = gcnew Rmt_reg::CRmtReg(mm_MngCover); //создание и регистрация }
Как было уже сказано, модуль стартовой функции собирается в режиме управляемого кода поэтому для него необходимо выполнить настройки, приведенные в разделе «Модули на С++/CLI в проекте С++», кроме того, для него может потребоваться отключить использование прикомпилированных заголовков.