Re[7]: Обработка событий MSOffice, IDispEventSimpleImpl
От: Vi2 Удмуртия http://www.adem.ru
Дата: 22.03.05 05:18
Оценка:
Здравствуйте, BorysB, Вы писали:

BB>Спасибо, все так и сделал, но, увы, не помогло.


Т.е. сделал так:
_ATL_FUNC_INFO DocumentBeforePrintInfo = {CC_STDCALL, VT_EMPTY, 2, {VT_DISPATCH, VT_BOOL|VT_BYREF}};

void __stdcall CAddin::DocumentBeforePrint(IDispatch* /*_Document**/ Doc, VARIANT_BOOL *Cancel)
{
    /*все остальное несущественно*/
    *Cancel = VARIANT_TRUE;
    /*все остальное несущественно*/
}
и не работает?

BB>Получается, что способ передачи параметров по большому счету не зависит от [in] [out].


Почему не зависит? Очень даже зависит. Если параметр не [out], то его невозможно изменить или передать вовне сервера. Если он не [in], то бесполезно проверять его входное значение.

BB>А если у нас [optional], то можно ли передавать просто NULL, или нужно какие-то VT_EMPTY обязательно?


Как правило, optional параметр передается специальным Variant-ом с vt:=VT_ERROR и scode:=DISP_E_PARAMNOTFOUND.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.