Как работать с QAxObject в отдельном потоке?
Пытаюсь сгенерировать документ word в отдельном потоке:
wordApp_ = new QAxObject("Word.Application");
wordDoc_ = wordApp_->querySubObject("Documents()");
newDoc_ = wordDoc_->querySubObject("Add()");
newDoc_->querySubObject("PageSetup")->setProperty("Orientation", "wdOrientLandscape");
rangeInputData_ = newDoc_->querySubObject("Range()");
rangeInputData_->dynamicCall("SetRange(int, int)", 0, 100);
font_rangeInputData_ = rangeInputData_->querySubObject("Font");
font_rangeInputData_->setProperty("Size", 14);
font_rangeInputData_->setProperty("Name", "Times New Roman");
tables_ = newDoc_->querySubObject("Tables()");
rangeTable_ = newDoc_->querySubObject("Range()");
rangeTable_->dynamicCall("SetRange(int, int)", 201, 300);
table_ = tables_->querySubObject("Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)",
rangeTable_->asVariant(), numRows_ + 1, numColumns_, 1, 1);
Выводит ошибки:
QAxBase::setControl: requested control Word.Application could not be instantiated
QAxBase::dynamicCallHelper: Object is not initialized, or initialization failed
P.S
В одном потоке все работает отлично, но когда я создаю документ, то подвисает пользовательский интерфейс. Именно поэтому я хотел бы вывести эту задачу в другой поток. Заранее спасибо.
Ответы (1 шт):
Автор решения: Muhamed Ali
→ Ссылка
Подключил "window.h"
Добавил код перед вызовом функции:
CoInitializeEx(NULL, COINIT_MULTITHREADED);