Здравствуйте, 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);
Здравствуйте, Андрей, Вы писали:
А>Через QueryInterface, вестимо.
А>Кстати, судя по прототипу, эта функция как раз и возвращает тебе указатель на IDispatch
А>Или ты ошибся и она должна выглядеть так?
А>А> void C_GridEX::PrintPreview(LPDISPATCH PreviewControl, BOOL* PrintSelectedItems);
А>
Нет, не ошибся.
Функция берет LPDISPATCH другого контрола и пользуется им.
Дело в том, что я столкнулся с данным эпизодом впервые.
Если не трудно напиши кодом.
Спасибо!
Здравствуйте, 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();
}