Re: Печать/предпросмотр печати
От: mryau Россия http://woodland.ru/~wjdogs
Дата: 25.03.05 10:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Возможно ли прикрутить печать/предварительный просмотр к dialog-based приложению или элементу управления ActiveX? Если да, то каким образом?

Ищите на codeproject.com статью, о прикручивании к CDialog Document/View.

Дальнейшее, нужно только в случае, когда диалог в ходе работы то открывают, то закрывают:
Когда заработает, не добавьте что-то похожее на:

Во View:
void C...View::OnFilePrintPreview()
{
    // При переопределении функции CView::OnFilePrintPreview 
    // необходимо самим создать структуру для сохранения 
    // текущего состояния фрейма
    if (previewState) delete previewState;
    previewState = new CPrintPreviewState;
    // Обязательный вызов, в котором задаем идентификатор
    // блока диалога для отображаемой панели инструментов
    if (!DoPrintPreview(IDD_PREVIEW_TOOLBAR, this, RUNTIME_CLASS(CPreviewView), previewState)) {
        AfxMessageBox(AFX_IDP_COMMAND_FAILURE);
        delete previewState;
        previewState = NULL;
    } 
}

//Поскольку в СPreviewView CView объявлено friend, из него и закрываем
void C...View::ClosePreviewView(CFrameWnd *w)
{
    previewState->lpfnCloseProc(w);
    delete previewState;
    previewState = NULL;
}


В диалоге:
void C...Dialog::OnClose()
{
    //Предполагаем, что у нас есть только одно не наше CView -- для печати
    CView *cur = m_pFrame->GetActiveView();
    C...View *v = (C...View *)m_pDocument->GetView(RUNTIME_CLASS(C...View));
    if (v != cur) v->ClosePreviewView(m_pFrame);
    }
    CDialog::OnClose();
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.