COM и Word

Тема в разделе "WASM.WIN32", создана пользователем XshStasX, 25 июл 2011.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Хочу изменить "отображение" документа, для этого получил View документа и изменяю в нем поле Type
    Так вот получить Type можно, а вот изменить ошибка : "Параметр не найден", как такое может быть ?
    Код (Text):
    1.             hr = GetProperty(View,OLESTR("Type"),&varResult);  // здесь возвращает S_OK
    2.  
    3.             dp.cArgs = 1;
    4.             dp.cNamedArgs = 0;
    5.             dp.rgvarg = &varResult;
    6.                                            // View это Document.ActiveWindow.View
    7.             hr = SetProperty(View,OLESTR("Type"),NULL,&dp);    //  а здесь параметр не найден .
    8.  
    9.        
    10.  
    11.  
    12.  
    13. HRESULT GetProperty(IDispatch *iDisp,LPOLESTR name,VARIANT* varResult,LCID lcid = GetSystemDefaultLCID()){
    14.     HRESULT hr;
    15.     WORD wFlags = DISPATCH_PROPERTYGET;
    16.    
    17.     EXCEPINFO excepInfo={0};
    18.     UINT uArgErr;
    19.     DISPPARAMS dp = {0};
    20.     DISPID dispid;
    21.  
    22.     hr = iDisp->GetIDsOfNames(IID_NULL,&name,1,lcid,&dispid);
    23.  
    24.     if (FAILED(hr)){
    25.         return hr;
    26.     };
    27.     hr = iDisp->Invoke(dispid,IID_NULL, lcid, wFlags, &dp, varResult, &excepInfo, &uArgErr);
    28.     return hr;
    29. };
    30.  
    31. HRESULT SetProperty(IDispatch *iDisp,LPOLESTR name,VARIANT* varResult,DISPPARAMS *dp,LCID lcid = GetSystemDefaultLCID()){
    32.     HRESULT hr;
    33.     WORD wFlags = DISPATCH_PROPERTYPUT;
    34.    
    35.     EXCEPINFO excepInfo={0};
    36.     UINT uArgErr;
    37.    
    38.     DISPID dispid;
    39.  
    40.     hr = iDisp->GetIDsOfNames(IID_NULL,&name,1,lcid,&dispid);
    41.  
    42.     if (FAILED(hr))
    43.         return hr;
    44.  
    45.     hr = iDisp->Invoke(dispid,IID_NULL, lcid, wFlags, dp, varResult, &excepInfo, &uArgErr);
    46.     return hr;
    47. };
     
  2. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Была опечатка в коментариях поправил.
     
  3. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    попробуй так
    Код (Text):
    1. DISPID dispidNamed = DISPID_PROPERTYPUT;    // ++
    2. ...
    3. dp.cArgs = 1;
    4.                                             //-- dp.cNamedArgs = 0;
    5. dp.cNamedArgs = 1;                          // ++
    6. dp.rgdispidNamedArgs = &dispidNamed;        // ++
    7. dp.rgvarg = &varResult;
    8.        // View это Document.ActiveWindow.View
    9. hr = SetProperty(View,OLESTR("Type"),NULL,&dp);    //  а здесь параметр не найден .
     
  4. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    q_q
    Спасибо помогло.