Использование ActiveX в невидимом приложении C++Builder

Я работаю над приложением C++Builder, которое использует элемент управления ActiveX для выполнения некоторой фоновой работы. Если я запускаю приложение явно, оно работает нормально. Но когда я запускаю его незримо (выполняется установкой Application->ShowMainForm = falseво время запуска) элемент управления ActiveX ведет себя иначе. Методы ActiveX, которые возвращаются немедленно, работают нормально, но метод, выполняющий фоновую работу, не работает, никакого прогресса не происходит.

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

В качестве теста я создал небольшой проект C # .NET в Visual Studio, и там тот же элемент управления ActiveX отлично работает в невидимом режиме (но не в C++Builder).

1 ответ

Вызов HandleNeeded() в элементе управления ActiveX в конструкторе формы устранил проблему.

      TForm1::TForm1()
{
    control1->HandleNeeded();
}

Очевидно, некоторым элементам управления ActiveX для правильной работы требуется дескриптор окна, и этот дескриптор не создается автоматически, когда он скрыт.

Другие вопросы по тегам