Re[5]: Add-in в Ворде 2000 работает, а в Ворде97 нет!!!!
От: globus  
Дата: 18.10.04 10:52
Оценка:
Здравствуйте, Dmitriy Yakovlev, по ходу приспосабливания своего аддина под Ворд появились новые к Вам вопросы.
В своем проекте подключаю с помощью директивы #import нужную вордовскую тайп либу (MSWORD.OLB). Ну и работаю через смарт-поинтеры. Так мне проще Возникла одна ситуация, ниже кусок кода:

MSWORD::_ApplicationPtr spApp = m_spApp;
MSWORD::_DocumentPtr spDoc = spApp->GetActiveDocument();
_variant_t vt(1);
int cnt = spDoc->GetHyperlinks()->GetCount();
MSWORD::HyperlinkPtr spLink = spDoc->GetHyperlinks()->Item(&vt);
// сначада использовал 
// bstr_t bstrAddress = GetAddress();
BSTR bstr = NULL;
HRESULT hr = spLink->get_Address(&bstr);


В ХР офисе на этом месте все нормально, в 97 spLink не NULL (смотрю через Watch m_pInterface = 0x02e5973c и все вроде на месте). cnt = 17 (17 гиперлиннок в документе).
И в ДебагВью вижу:

First-chance exception at 0x00000000 in WINWORD.EXE: 0xC0000005: Access violation reading location 0x00000000.
First-chance exception at 0x7c81eb33 in WINWORD.EXE: 0x80010105: The server threw an exception.


Это hr в Watch-е

hr 0x80010105 The server threw an exception.     HRESULT


Тут я подумал, что нельза наверное подключать ТайпЛибы от 2000 офиса 97 офису. Если так, то к Вам вопрос — ка тогда быть, делать ли отдельно для 97 офиса все? я видел в Ваших предыдущих постах код:


#ifdef __OFFICE_97
DY>    pCBButton->OnAction = _bstr_t(_T("OnCmd"));
DY>#endif // __OFFICE_97


значит у Вас отдельный билд для 97 офиса.
И Вы так же само подключаете ТайпЛибы (через #define __OFFICE_97) ?
Я думаю Вы поняли мою проблему, в двох словах — Как надо сделать чтобы работало и в 2000 и в 97 офисе. Но если другие тайплибы, то ведь код совсем другой получется — это ж надо будет с другого неймспейса выбирать интерфейсы. Или возможно, Вы сразу ОЛБ 8 версии подключали и таким образом у Вас работает аддин везде. Да если это так, прийдется переписывать ух-как не хочется то
Уже уверен на 90% что Вы наверное подключали msword8.olb И зачем я 2000 то подключал ....

Заранее Вам благодарен!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.