Динамическое создание Activex. Нужно использовать Cwnd::createcontrol?

  • Автор темы Danechka
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

Danechka

#1
Плагин может получить хэндл окна браузера и вывести туда свои кнопки/форуму.
При помощи команды

Код:
#import "Project1.tlb" no_namespace
CoInitialize( NULL );
hr = pServer.CreateInstance( __uuidof( TAsd ) );
подключаю к своему плагину компонент ActiveX.
Из плагина (и соответственно из браузера) могу получить доступ к внутренним методам компонента ActiveX (которые описаны в IDispatch).
С этим вроде бы разобрался.
Теперь предстоит вывести в окне браузера форму, которая содержится в элементе ActiveX.
И вот тут не могу понять, каким образом мне из программы обратиться к подключенному ActiveX, что бы вывести его окно???

зы. Пишу на VC++.
 
D

Danechka

#2
Нашел метод IViewObject::Draw. Можно ли с его помощью, если ему передать хэндлер окна браузера, вывести злополучный ActiveX ???
Подскажите, хотя бы, в правильном направлении пытаюсь двигаться или нет?
 
D

Danechka

#3
Подскажите, почему не работает такой код (пытаюсь на обычную форму вывести стандартный контрол- календарь):
Код:
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,thisWnd ,0,NULL,TRUE,NULL);
Кнопка "Test" рисуется нормально. А вот когда пытается нарисоваться контрол получаю сообщение
Код:
Unhandled exception at 0x7c19f5f8 (MFC71.dll) in tstax.exe: 0xC0000005: Access violation reading location 0x00000000.
 
D

Danechka

#4
Добавил
Код:
#include "Afxdisp.h"
...
AfxEnableControlContainer();
Ошибка пропала, но ActiveX так и не отображается...
Помогите, плиз!!!
 
D

Danechka

#5
Урааа! Отображается!
Если остановить программу сразу же после CreateControl, то контрол видно.
А потом он исчезает...
ЕГо может как-то перерисовать нужно???
 
Статус
Закрыто для дальнейших ответов.