неуловимый ActiveX - помогите поймать
От: Аноним  
Дата: 08.08.10 16:38
Оценка:
Среда программирования VS2008, язык C++, используютмя классы MFC
Создано диалоговое окно dlg : public CDialog. Cоздан и размещён на этом окне объект ActiveX.
На компе , где стоит VS2008, всё компилируется, выполняется. При переносе исполняемого файла, вместе с библиотеками, тоже прогамма работает, но окно с объектом ActiveX не появляется. Какие команды, с какими параметрами необходимо написать, чтоб иницилизировать объект ActiveX, и чтобы появилось диалоговое окно?

Ответы на форуме читал: в них указана общая идея, — а моих знаний про перечисленные команды не хватает. Поэтому и прошу помочь. Спасибо всем, кто откликнется.
Re: неуловимый ActiveX - помогите поймать
От: morm Россия  
Дата: 08.08.10 17:23
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>Среда программирования VS2008, язык C++, используютмя классы MFC

А>Создано диалоговое окно dlg : public CDialog. Cоздан и размещён на этом окне объект ActiveX.
А>На компе , где стоит VS2008, всё компилируется, выполняется. При переносе исполняемого файла, вместе с библиотеками, тоже прогамма работает, но окно с объектом ActiveX не появляется. Какие команды, с какими параметрами необходимо написать, чтоб иницилизировать объект ActiveX, и чтобы появилось диалоговое окно?

А>Ответы на форуме читал: в них указана общая идея, — а моих знаний про перечисленные команды не хватает. Поэтому и прошу помочь. Спасибо всем, кто откликнется.


regsvr32 для библиотеки с объектом
Re[2]: неуловимый ActiveX - помогите поймать
От: odisey2010  
Дата: 09.08.10 10:02
Оценка:
Здравствуйте, morm, Вы писали:

M>Здравствуйте, Аноним, Вы писали:


А>>Среда программирования VS2008, язык C++, используютмя классы MFC

А>>Создано диалоговое окно dlg : public CDialog. Cоздан и размещён на этом окне объект ActiveX.
А>>На компе , где стоит VS2008, всё компилируется, выполняется. При переносе исполняемого файла, вместе с библиотеками, тоже прогамма работает, но окно с объектом ActiveX не появляется. Какие команды, с какими параметрами необходимо написать, чтоб иницилизировать объект ActiveX, и чтобы появилось диалоговое окно?


M>regsvr32 для библиотеки с объектом


void finit(){
CoInitialize(NULL);
pm_AxChartJunc = new CAxchartctrl1;
CRect cJ(98,7,310,147);
LPCTSTR str = _T("{ 0xD9500D2A, 0x825C, 0x429A, { 0xB8, 0x24, 0xFE, 0xD7, 0x44, 0x12, 0xCE, 0xF6 }}");
pm_AxChartJunc->Create(str, "", WS_VISIBLE | WS_BORDER, rcJ, this ,IDC_AXCHARTCTRL1);
}

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) а при вызове диалогового окна на другой машине — это окно вообще не появляться. В чём причина?
Re[3]: неуловимый ActiveX - помогите поймать
От: morm Россия  
Дата: 12.08.10 11:00
Оценка:
Здравствуйте, 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()?
Re[4]: неуловимый ActiveX - помогите поймать
От: odisey2010  
Дата: 12.08.10 18:17
Оценка:
Здравствуйте, morm, Вы писали:


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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.