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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Danechka, 30 июл 2007.

Статус темы:
Закрыта.
  1. Danechka

    Danechka Гость

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

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

    зы. Пишу на VC++.
     
  2. Danechka

    Danechka Гость

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

    Danechka Гость

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

    Danechka Гость

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

    Danechka Гость

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

Поделиться этой страницей