Здравствуйте, 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.