Подключение ActiveX к программе и вывод его формы.
От: Danechka  
Дата: 30.07.07 13:53
Оценка:
Пишу плагины для Файерфокса и Оперы и возник еще один вопрос:
Плагин может получить хэндл окна браузера и вывести туда свои кнопки/форуму.
При помощи команды


#import "Project1.tlb" no_namespace
...
CoInitialize( NULL );
hr = pServer.CreateInstance( __uuidof( TAsd ) );


подключаю к своему плагину компонент ActiveX.
Из плагина (и соответственно из браузера) могу получить доступ к внутренним методам компонента ActiveX (которые описаны в IDispatch).
С этим вроде бы разобрался.
Теперь предстоит вывести в окне браузера форму, которая содержится в элементе ActiveX.
И вот тут не могу понять, каким образом мне из программы обратиться к подключенному ActiveX, что бы вывести его окно???

зы. Пишу на VC++.
Re: Подключение ActiveX к программе и вывод его формы.
От: Danechka  
Дата: 31.07.07 06:44
Оценка:
Нашел метод IViewObject::Draw. Можно ли с его помощью, если ему передать хэндлер окна браузера, вывести злополучный ActiveX ???
Подскажите, хотя бы, в правильном направлении пытаюсь двигаться или нет?
Re: Подключение ActiveX к программе и вывод его формы.
От: Danechka  
Дата: 01.08.07 07:26
Оценка:
Подскажите, почему не работает такой код (пытаюсь на обычную форму вывести стандартный контрол- календарь):
m_hTestButton = CreateWindow("BUTTON", "Test", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON , 110, 0, 50, 20, hwndShell, (HMENU) 3, hInst, NULL);

CRect r(1, 2, 4, 4);
CWnd *thisWnd = CWnd::FromHandle(hWnd);
BOOL aaa;
CWnd tw;
//{8E27C92B-1264-101C-8A2F-040224009C02} - Calendar Control 8.0
aaa = tw.CreateControl("{8E27C92B-1264-101C-8A2F-040224009C02}",NULL,WS_VISIBLE,r,CWnd::FromHandle(hWnd) ,0,NULL,TRUE,NULL);


Кнопка "Test" рисуется нормально. А вот когда пытается нарисоваться контрол получаю сообщение
Unhandled exception at 0x7c19f5f8 (MFC71.dll) in tstax.exe: 0xC0000005: Access violation reading location 0x00000000.
Re: Подключение ActiveX к программе и вывод его формы.
От: Danechka  
Дата: 01.08.07 09:13
Оценка:
Добавил
#include "Afxdisp.h"
...
AfxEnableControlContainer();

Ошибка пропала, но ActiveX так и не отображается...
Помогите, плиз!!!
Re: Подключение ActiveX к программе и вывод его формы.
От: Danechka  
Дата: 01.08.07 10:03
Оценка:
Урааа! Отображается!
Если остановить программу сразу же после CreateControl, то контрол видно.
А потом он исчезает...
ЕГо может как-то перерисовать нужно???
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.