環境は、XP VS2005(mfc)で、SDI CFormView Windowsエクスプローラスタイルです。
CFormViewベースでプレビューを行いたいのですが、方法がわかりません。
CMainFrameはOnFilePrintPreview()にくるのですがプレビュー方法が分かりません。
また、CFormViewでは、プレビュー方法はわかるのですが、OnPrint等オーバーライドに
きません。
ご存知の方よろしくお願いします。
質問の文章に解せない部分がありますが、
CFrameWndとCViewがどのように連携してプレビューを行っているかを
調べれば解決しそうな気がします。
プレビュー時にCView::OnPrintが何処からコールされるのかを調べて見ては
どうでしょうか?
MSDNを調べれば、何かわかると思いますよ。
PATIOさんありがとうございます。
下記のコードでCMainFrameからプレビューを行うことができました。
void CMainFrame::OnFilePrintPreview()
{
if (m_bPreview) {
this->SetFocus();
return;
}
CFrameWnd* pOldFrame = (CFrameWnd*)this;
if (!m_pTemplate) {
m_pTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
NULL,
RUNTIME_CLASS(CFrameWnd),
RUNTIME_CLASS(CViewPrintPreview));
AfxGetApp()->AddDocTemplate(m_pTemplate);
}
CFrameWnd * pFrameWnd = m_pTemplate->CreateNewFrame( NULL, NULL );
m_bPreview = TRUE;
m_pTemplate->InitialUpdateFrame( pFrameWnd, NULL);
CViewPrintPreview* pView=(CViewPrintPreview*)pFrameWnd->GetActiveView
();
pView->m_pOldFrame = pOldFrame;
AfxGetApp()->m_pMainWnd = pFrameWnd;
pView->OnFilePrintPreview();
}