#1 10.07.06 23:47
C++Builder и Word
Моя прога формирует Word документ и ей необходимо узнать сколько страниц в документе.
Эта тема много раз подымалась на разных форумах, но ответы писали исключительно для VB или Dephi:
что то вроде -
ActiveDocument.BuiltInDocumentProperties[wdPropertyPages].Value
Для C++Builder WordApplication->ActiveDocument->BuiltInDocumentProperties
это IDispatch и там сплошные заморочки.
можно ли как нибудь через WordApplication???
Offline
#5 11.07.06 12:48
Re: C++Builder и Word
MadSlayer написал(а):
Mitek написал(а):
это IDispatch и там сплошные заморочки.
Что значит заморочки? Как раз все предельно понятно.
IDispatch просто очень неудобный и громоздкий интерфейс. Вот сравни:
OLECHAR* szMember = L"Visible";
pAppl-GetIDsOfNames(IID_NULL, &szMember , 1, LOCALE_SYSTEM_DEFAULT,
&dispid);
DISPPARAMS params;
params.rgvarg = new VARIANT[10];
params.rgdispidNamedArgs = new DISPID[10];
params.rgvarg[0].vt = VT_BOOL;
params.rgvarg[0].boolVal = true;
params.rgdispidNamedArgs[0] = DISPID_PROPERTYPUT;
params.cArgs = 1;
params.cNamedArgs = 1;
pAppl-Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYPUT, ¶ms, NULL, NULL, NULL);
или
WordApplication->set_Visible(true);
Оба способа делают одно и тоже.
Offline
#7 14.07.06 13:28
Re: C++Builder и Word
Вообщем ответ на свой вопрос я сам же и нашел. Может кому то будет полезно знать.
С IDispatch-ем заморачиваться не имеет смысла:
long Pages;
OleVariant IncludeFootnotes = True;
WordApplication->ActiveDocument->ComputeStatistics(wdStatisticPages,IncludeFootnotes,&Pages);
Pages - кол-во страниц
Offline

