LPDISPATCH Как получить?
От: Dima_Kam Россия http://atlaskam.kamchatka.ru
Дата: 14.04.04 03:25
Оценка:
Есть функция:
void C_GridEX::PrintPreview(LPDISPATCH* PreviewControl, BOOL* PrintSelectedItems)
Как получить LPDISPATCH от контрола, чтобы передать его в вышеуказанную функцию?
Спасибо!
Re: LPDISPATCH Как получить?
От: Андрей Россия  
Дата: 14.04.04 04:20
Оценка:
Здравствуйте, Dima_Kam, Вы писали:

D_K>Есть функция:

D_K>void C_GridEX::PrintPreview(LPDISPATCH* PreviewControl, BOOL* PrintSelectedItems)
D_K>Как получить LPDISPATCH от контрола, чтобы передать его в вышеуказанную функцию?
D_K>Спасибо!

Через QueryInterface, вестимо.
Кстати, судя по прототипу, эта функция как раз и возвращает тебе указатель на IDispatch
Или ты ошибся и она должна выглядеть так?

  void C_GridEX::PrintPreview(LPDISPATCH PreviewControl, BOOL* PrintSelectedItems);
Re[2]: LPDISPATCH Как получить?
От: Dima_Kam Россия http://atlaskam.kamchatka.ru
Дата: 14.04.04 04:33
Оценка:
Здравствуйте, Андрей, Вы писали:

А>Через QueryInterface, вестимо.

А>Кстати, судя по прототипу, эта функция как раз и возвращает тебе указатель на IDispatch
А>Или ты ошибся и она должна выглядеть так?

А>
А>  void C_GridEX::PrintPreview(LPDISPATCH PreviewControl, BOOL* PrintSelectedItems);
А>


Нет, не ошибся.
Функция берет LPDISPATCH другого контрола и пользуется им.

Дело в том, что я столкнулся с данным эпизодом впервые.
Если не трудно напиши кодом.
Спасибо!
Re[3]: LPDISPATCH Как получить?
От: Андрей Россия  
Дата: 14.04.04 04:44
Оценка: 6 (1)
Здравствуйте, Dima_Kam, Вы писали:

skip

D_K>Нет, не ошибся.

D_K>Функция берет LPDISPATCH другого контрола и пользуется им.

Непонятный прототип какой-то

Ну да ладно. Делаться это должно примерно так:

  LPDISPATCH pDisp = NULL;

  // Это интерфейс IUnknown другого контрола, в принципе подойдет любой из его интерфейсов, доступных тебе
  //
  if (pUnknown->QueryInterface(IID_IDispatch, reinterpret_cast<void**>(&pDisp)) == S_OK)
  {
    BOOL bPrintSelected = false;  // или true - это уж твое дело

    // Здесь, собственно, нужный тебе вызов
    //
    pGrid->PrintPreview(&pDisp, &bPrintSelected);

    pDisp->Release();
  }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.