일부 보고서가 있고 보고서가 인쇄되고 MFC 인쇄 아키텍처에서 제공 한 방식으로 인쇄 미리보기가있는 MDI 응용 프로그램이 있습니다.MDI 응용 프로그램에서 문서에 대한 다중보기 MFC
하지만 시나리오가 변경되어 보고서가 HTML 파일 형식이어야하며 환경 설정에 따라 다른 관점으로 표시해야합니다. 내 CWinApp 많은 문서 /보기로 응용 프로그램 아키텍처를 기반으로 솔루션을 선택했습니다. 거기에 모든 Doc/view Templates를 생성하고 응용 프로그램이 시작되면 설정에 따라 새로운 Doc/View가 생성됩니다.
class CMyWinApp: public CWinApp
{
public:
virtual BOOL InitInstance();
protected:
}
BOOL CMyWinApp::InitInstance()
{
// Lot of Code Here
CreateDocumentTemplates();
}
void CMyWinApp::CreateDocumentTemplates()
{
// Some Other Doc/Templates are here
if(m_bNewView) // Based on the Setting I am creating the new View and Old Doc
{
pDocTemplate = new CMultiDocTemplate(
IDR_REPORTS,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CMyFrame), // custom MDI child frame
RUNTIME_CLASS(CMyNewView));
pDocTemplate->SetContainerInfo(IDR_TYPE_CNTR_IP);
AddDocTemplate(pDocTemplate);
}
else // This is a Old View and Doc
{
pDocTemplate = new CMultiDocTemplate(
IDR_REPORTS,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CMyFrame), // custom MDI child frame
RUNTIME_CLASS(CMyView));
pDocTemplate->SetContainerInfo(IDR_TYPE_CNTR_IP);
AddDocTemplate(pDocTemplate);
}
}
이제이 환경 설정은 언제든지 설정할 수 있으며 추가 보고서는 적절한 컨텍스트로 표시해야합니다.
런타임에 어떻게 달성 할 수 있습니까? (예를 들어, 오버라이드 (override) ID_FILE_NEW/ID_FILE_OPEN 또는 유사한)를 만들고, 앱 클래스에서
당신은 imbtfab 대답을 따라야합니다. 다른 방법은 그다지 사소하지 않은 뷰를 내부적으로 바꾸는 것입니다. – zar