Хочу изменить "отображение" документа, для этого получил View документа и изменяю в нем поле Type Так вот получить Type можно, а вот изменить ошибка : "Параметр не найден", как такое может быть ? Код (Text): hr = GetProperty(View,OLESTR("Type"),&varResult); // здесь возвращает S_OK dp.cArgs = 1; dp.cNamedArgs = 0; dp.rgvarg = &varResult; // View это Document.ActiveWindow.View hr = SetProperty(View,OLESTR("Type"),NULL,&dp); // а здесь параметр не найден . HRESULT GetProperty(IDispatch *iDisp,LPOLESTR name,VARIANT* varResult,LCID lcid = GetSystemDefaultLCID()){ HRESULT hr; WORD wFlags = DISPATCH_PROPERTYGET; EXCEPINFO excepInfo={0}; UINT uArgErr; DISPPARAMS dp = {0}; DISPID dispid; hr = iDisp->GetIDsOfNames(IID_NULL,&name,1,lcid,&dispid); if (FAILED(hr)){ return hr; }; hr = iDisp->Invoke(dispid,IID_NULL, lcid, wFlags, &dp, varResult, &excepInfo, &uArgErr); return hr; }; HRESULT SetProperty(IDispatch *iDisp,LPOLESTR name,VARIANT* varResult,DISPPARAMS *dp,LCID lcid = GetSystemDefaultLCID()){ HRESULT hr; WORD wFlags = DISPATCH_PROPERTYPUT; EXCEPINFO excepInfo={0}; UINT uArgErr; DISPID dispid; hr = iDisp->GetIDsOfNames(IID_NULL,&name,1,lcid,&dispid); if (FAILED(hr)) return hr; hr = iDisp->Invoke(dispid,IID_NULL, lcid, wFlags, dp, varResult, &excepInfo, &uArgErr); return hr; };
попробуй так Код (Text): DISPID dispidNamed = DISPID_PROPERTYPUT; // ++ ... dp.cArgs = 1; //-- dp.cNamedArgs = 0; dp.cNamedArgs = 1; // ++ dp.rgdispidNamedArgs = &dispidNamed; // ++ dp.rgvarg = &varResult; // View это Document.ActiveWindow.View hr = SetProperty(View,OLESTR("Type"),NULL,&dp); // а здесь параметр не найден .