powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Загрузить ActiveX Control с помощью CreateObject без подключения библиотеки типов
5 сообщений из 5, страница 1 из 1
Загрузить ActiveX Control с помощью CreateObject без подключения библиотеки типов
    #36882097
BCP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BCP
Гость
Есть ActiveX Control, написанный на VB6.
Хочу вставить его на форму Borland C++Builder () без создания bpl и использования библиотеки типов.

следующий код работает (если не ошибся с paste):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
// в объявлении класса формы "f.h"
class F: public TForm
{
//........
    Variant m_Object;
    HANDLE m_HWND;
};
// в f.cpp

    m_Object = Variant::CreateObject("XContrlCreateTest.UserControl1");
    m_HWND = (void*)int(m_Object.OlePropertyGet("ControlHWND")); //свойство, которое возвращает HANDLE контрола

    ::SetParent( m_HWND, pnlControl->Handle); // pnlControl - родительское окно, куда будет положен мой контрол
    ::SetWindowPos ( m_HWND,  0 ,  0 ,  0 , pnlControl->Width, pnlControl->Height, SWP_SHOWWINDOW);

//    int iStyle = ::GetWindowLong(pnlControl->Handle, GWL_STYLE);
//    iStyle |= WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_BORDER | WS_TABSTOP;
Похожий код и при подключении с VB6, только синтаксис другой.

Контрол создаётся, кладётся на форму и почти работает.
"Почти" - потому, что у контрола :
1. Не работает Tab Stop
2. Не работает OleDrop
3. Не срабатывают события UserControl_Show и UserControl_Resize .

Особенно важно UserControl_Resize.

Пробовал вызывать
Код: plaintext
1.
::MoveWindow(m_HWND,  0 , 0 , pnlControl->Width -  20 , pnlControl->Height -  20 , true);
- результат - контрол ресайзится, но обработчик "UserControl_Resize" не вызывается :(

Пожалуйста, помогите советом: как сделать, чтобы это окошко стало работать полноценно?

P.S. В примере также проект для VB
...
Рейтинг: 0 / 0
Загрузить ActiveX Control с помощью CreateObject без подключения библиотеки типов
    #36882152
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BCPПожалуйста, помогите советом: как сделать, чтобы это окошко стало работать полноценно?Забить на UserControl_Resize и обрабатывать изменение размера через WM_SIZE.
...
Рейтинг: 0 / 0
Загрузить ActiveX Control с помощью CreateObject без подключения библиотеки типов
    #36882258
BCP,

почитайте , что должен уметь ActiveX Control Container.
...
Рейтинг: 0 / 0
Загрузить ActiveX Control с помощью CreateObject без подключения библиотеки типов
    #36882501
BCP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BCP
Гость
Antonariy , да, спасибо, об этом я забыл. Только там сложности с возвратом в контрол из оконной функции, и с удалением не всё ясно

13-й квартал , спасибо, это навело на мысль поюзать специальный "TOleContainer"
Код: plaintext
1.
2.
3.
    OleContainer1->CreateObject("XContrlCreateTest.UserControl1",false);
    m_Object = OleContainer1->OleObject;
    m_HWND = (void*)int(m_Object.OlePropertyGet("ControlHWND"));
Тогда "UserControl_Resize" срабатывает только 1 раз при создании объекта, но в дальше при ресайзе TOleContainer-а не работает.

Возможно, тему стоило завести в ветке C++ ...
...
Рейтинг: 0 / 0
Загрузить ActiveX Control с помощью CreateObject без подключения библиотеки типов
    #36882723
BCP,

ContainersAn ActiveX Control container is an OLE container that supports the following additional features...Т. е. функциональности TOleContainer скорее всего будет недостаточно. Попробуйте поискать компонент типа этого (работоспособность не проверял, сужу по описанию).
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Загрузить ActiveX Control с помощью CreateObject без подключения библиотеки типов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]