Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавить ActiveX контрол во время выполнения 
:(
    Опции темы
Competitor
Дата 19.6.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 23.3.2005
Где: Tula

Репутация: нет
Всего: -1



Привет всем,
Создал простое dialog based mfc application.
Могу через редактор ресурсов ("Insert ActiveX Control") добавить в него ActiveX компонент. И соответственно на форме появится нужный мне контрол.
Есть задача сделать по другому: заюзать COM-сервер программно, и добавить контрол также программно, например при создании формы.
Заюзал COM-сервер так:
Код

HINSTANCE dllInstance;
typedef void (__stdcall *DLLGETCLASSOBJECT)(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
DLLGETCLASSOBJECT fDllGetClassObject;
....
    dllInstance = LoadLibrary("vsflex8n.ocx");
    fDllGetClassObject = (DLLGETCLASSOBJECT)GetProcAddress(dllInstance, "DllGetClassObject");
    IClassFactory *pClassFactory;
    fDllGetClassObject(__uuidof(VSFlexGrid), IID_IClassFactory, (LPVOID*)&pClassFactory);
    IVSFlexGrid *pIVSFlexGrid;
    pClassFactory->CreateInstance( NULL, __uuidof(IVSFlexGrid), (void**) &pIVSFlexGrid );

Что нужно сделать после этого, чтобы контрол VSFlexGrid появился на форме?
Спасибо.

PS: пробовал добавлять переменную через меню для АктивеХ компонента, там класс автоматически создался, и в нем посмотрел как этот контрол создается. Вот так: 
Код

    virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
                        const RECT& rect, CWnd* pParentWnd, UINT nID, 
                        CCreateContext* pContext = NULL)
    { 
        return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); 
    }

в функцию CWnd::CreateControl у них CLSID передается, а если COM-сервер не зарегестрирован в реесте, то ничего не создатся. А переписывать CreateControl очень не хочется, там у них сума сойти можно, CreateControl вызывает еще полно функций и потом вызываетса COleControlSite::CreateOrLoad а она вобще здоровая и это надо все переписать
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0674 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.