Здравствуйте, Аноним, Вы писали:
А>Среда программирования VS2008, язык C++, используютмя классы MFC А>Создано диалоговое окно dlg : public CDialog. Cоздан и размещён на этом окне объект ActiveX. А>На компе , где стоит VS2008, всё компилируется, выполняется. При переносе исполняемого файла, вместе с библиотеками, тоже прогамма работает, но окно с объектом ActiveX не появляется. Какие команды, с какими параметрами необходимо написать, чтоб иницилизировать объект ActiveX, и чтобы появилось диалоговое окно?
А>Ответы на форуме читал: в них указана общая идея, — а моих знаний про перечисленные команды не хватает. Поэтому и прошу помочь. Спасибо всем, кто откликнется.
regsvr32 для библиотеки с объектом
неуловимый ActiveX - помогите поймать
От:
Аноним
Дата:
08.08.10 16:38
Оценка:
Среда программирования VS2008, язык C++, используютмя классы MFC
Создано диалоговое окно dlg : public CDialog. Cоздан и размещён на этом окне объект ActiveX.
На компе , где стоит VS2008, всё компилируется, выполняется. При переносе исполняемого файла, вместе с библиотеками, тоже прогамма работает, но окно с объектом ActiveX не появляется. Какие команды, с какими параметрами необходимо написать, чтоб иницилизировать объект ActiveX, и чтобы появилось диалоговое окно?
Ответы на форуме читал: в них указана общая идея, — а моих знаний про перечисленные команды не хватает. Поэтому и прошу помочь. Спасибо всем, кто откликнется.
Здравствуйте, morm, Вы писали:
M>Здравствуйте, Аноним, Вы писали:
А>>Среда программирования VS2008, язык C++, используютмя классы MFC А>>Создано диалоговое окно dlg : public CDialog. Cоздан и размещён на этом окне объект ActiveX. А>>На компе , где стоит VS2008, всё компилируется, выполняется. При переносе исполняемого файла, вместе с библиотеками, тоже прогамма работает, но окно с объектом ActiveX не появляется. Какие команды, с какими параметрами необходимо написать, чтоб иницилизировать объект ActiveX, и чтобы появилось диалоговое окно?
void fDraw(long prop){
pm_AxChartJunc->Set(prop); //изменить свойство объекта ActiveX
pm_AxChartJunc->MyDraw(); //перерисовать на основе измененных свойств
}
void fdel(){
delete pm_AxChartJunc;
CoUninitialize();
}
Создается объект ActiveX pm_AxChartJunc. Доступ к свойствам есть(можна изменить внутренние числовые параметры). Но: 1)на машине, где и создан этот ActiveX, объект ActiveX не перерисовывается; 2) а при вызове диалогового окна на другой машине — это окно вообще не появляться. В чём причина?
Здравствуйте, odisey2010, Вы писали:
O>void finit(){ O> CoInitialize(NULL); O> pm_AxChartJunc = new CAxchartctrl1; O> CRect cJ(98,7,310,147); O> LPCTSTR str = _T("{ 0xD9500D2A, 0x825C, 0x429A, { 0xB8, 0x24, 0xFE, 0xD7, 0x44, 0x12, 0xCE, 0xF6 }}"); O> pm_AxChartJunc->Create(str, "", WS_VISIBLE | WS_BORDER, rcJ, this ,IDC_AXCHARTCTRL1); O>}
O>void fDraw(long prop){ O> pm_AxChartJunc->Set(prop); //изменить свойство объекта ActiveX O> pm_AxChartJunc->MyDraw(); //перерисовать на основе измененных свойств O>} O>void fdel(){ O> delete pm_AxChartJunc; O> CoUninitialize(); O>}
O>Создается объект ActiveX pm_AxChartJunc. Доступ к свойствам есть(можна изменить внутренние числовые параметры). Но: 1)на машине, где и создан этот ActiveX, объект ActiveX не перерисовывается; 2) а при вызове диалогового окна на другой машине — это окно вообще не появляться. В чём причина?
CAxchartctrl1 отнаследован от чего? Какие зависимости? Что значит "машина на которой этот ActiveX создан"? Есть исходный код объекта? Можно ли отладиться с входом внутрь pm_AxChartJunc->MyDraw()?
M>CAxchartctrl1 отнаследован от чего? Какие зависимости? Что значит "машина на которой этот ActiveX создан"? Есть исходный код объекта? Можно ли отладиться с входом внутрь pm_AxChartJunc->MyDraw()?
Вопрос решен. Решение простое: как всегда, когда начинаешь — есть детали, на которые в книгах не обращают внимание. А решение такое:
1) в файле, где вызываются методы объекта ActiveX сначало записать, например,в InitDialog:
HINSTANCE hLib = LoadLibrary("My.ocx");
(FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, _T("DllRegisterServer"));
(*lpDllEntryPoint)();
взято из http://www.firststeps.ru/mfc/activex/r.php?34
2) в свойствах проекта для объекта ActiveX выбрать статическую компоновку для поддержки MFC dll-библиотек.
PS: CAxchartctrl1 — это класс-оболочка, который генерируется в VS2008 при создании с помощью Wizard_Class переменной для ActiveX.