MFC MDI 单文档多视图的保存问题 我利用MDI创建多个视图 并使这些视图链接到同一个文档上 但是在进行保存操作时 却无法使用CDocument: Filesave() 调用一直出错 请问下高手 这是什么问题啊 困扰好久了 刚做一个小项目的界面 错误好多 一直在排除 好苦恼 希望能得到 比较清晰的说明或思路 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 多文档还是单文档多视图分割窗体?MDI还是SDI 上个代码 pDocTemplate1 = new CMultiDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CEB666Doc), RUNTIME_CLASS(CChildFrame), // main SDI frame window RUNTIME_CLASS(CKeysetView)); AddDocTemplate(pDocTemplate1); pDocTemplate2 = new CMultiDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CEB666Doc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CChView)); AddDocTemplate(pDocTemplate2); pDocTemplate3 = new CMultiDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CEB666Doc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CFucView)); AddDocTemplate(pDocTemplate3);这样建立模板 后面 初始化窗口 m_bFileOpenFirst=TRUE; CMainFrame* pMainFrame = new CMainFrame;//CEB666 mp_doc=new CEB666Doc; //mp_doc->OnNewDocument(); mp_doc->SetTitle("HQT EB666 radio program software"); CCreateContext context; context.m_pCurrentDoc=mp_doc; context.m_pNewViewClass=NULL;//RUNTIME_CLASS(CEB666View); context.m_pNewDocTemplate=NULL;//pDocTemplate; context.m_pLastView=NULL; context.m_pCurrentFrame=NULL;//pTreeFrame; if (!pMainFrame->LoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,NULL, &context )) return FALSE; m_pMainWnd = pMainFrame;第一个窗口context.m_pCurrentDoc=mp_doc; //that's the way I avoid to create new document every time I open a new view context.m_pNewViewClass=RUNTIME_CLASS(CChView); context.m_pNewDocTemplate=pDocTemplate1; context.m_pLastView=(((CMainFrame *)m_pMainWnd)->GetActiveFrame() ? ((CMainFrame *)m_pMainWnd)->GetActiveFrame()->GetActiveView() : NULL); context.m_pCurrentFrame=((CMainFrame *)m_pMainWnd)->GetActiveFrame(); pChFrame->LoadFrame(IDR_MAINFRAME1,WS_OVERLAPPEDWINDOW ,m_pMainWnd, &context ); pChFrame->MoveWindow(0,0,725,500); pChFrame->SetWindowText(g_LoadString("IDS_CHANNEL")); pChFrame->InitialUpdateFrame(mp_doc,TRUE);第二个窗口if(pFuncFrame!=NULL) { pFuncFrame->MDIActivate(); return; } pFuncFrame = new CChildFrame(); CCreateContext context; context.m_pCurrentDoc=mp_doc; //that's the way I avoid to create new document every time I open a new view context.m_pNewViewClass=RUNTIME_CLASS(CFucView); context.m_pNewDocTemplate=pDocTemplate2; context.m_pLastView=(((CMainFrame *)m_pMainWnd)->GetActiveFrame() ? ((CMainFrame *)m_pMainWnd)->GetActiveFrame()->GetActiveView() : NULL); context.m_pCurrentFrame=((CMainFrame *)m_pMainWnd)->GetActiveFrame(); if (!pFuncFrame->LoadFrame(IDR_MAINFRAME1,WS_OVERLAPPEDWINDOW ,m_pMainWnd, &context ))return; pFuncFrame->MoveWindow(20,30,695,520); pFuncFrame->SetWindowText(g_LoadString("IDS_FUNCTION")); pFuncFrame->InitialUpdateFrame(mp_doc,TRUE);都是链接到mp_doc void CEB666Doc::OnFileSave() { // TODO: Add your command handler code here if(!GetPathName().IsEmpty()) { CString szTemp=g_LoadString("IDS_WARN_SAVE"); szTemp += GetPathName(); if(AfxGetMainWnd()->MessageBox(szTemp,g_LoadString("IDS_PROMPT"), MB_OKCANCEL | MB_ICONEXCLAMATION)==IDCANCEL) return; } CDocument::OnFileSave(); } 烦高手 来解决下 File :doccore.cppLine: 290 求一个__stdcall方式的dll例子.我写出来导不出来 是用API创建按钮 CDC绘图 怎样减少内存的使用 强烈推荐老外最著名的网络开发工具包源代码 设置不常用的快捷键,大家给个建议,高分 ActiveMovieControl Object哪儿去了?谁能给我一个吗? 地址是[email protected] 一个小问题,顺带散分! 谁能告诉我该怎么办?还是ShellExecute 问一个装机问题:Win2K,换一块不同的主板,但是主板用的是同一个芯片组,怎么会死机? 散分(11.11) win32服务与管理进程如何通讯
MDI还是SDI 上个代码
pDocTemplate1 = new CMultiDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CEB666Doc),
RUNTIME_CLASS(CChildFrame), // main SDI frame window
RUNTIME_CLASS(CKeysetView));
AddDocTemplate(pDocTemplate1);
pDocTemplate2 = new CMultiDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CEB666Doc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CChView));
AddDocTemplate(pDocTemplate2);
pDocTemplate3 = new CMultiDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CEB666Doc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CFucView));
AddDocTemplate(pDocTemplate3);这样建立模板 后面
初始化窗口
m_bFileOpenFirst=TRUE;
CMainFrame* pMainFrame = new CMainFrame;//CEB666
mp_doc=new CEB666Doc;
//mp_doc->OnNewDocument();
mp_doc->SetTitle("HQT EB666 radio program software");
CCreateContext context;
context.m_pCurrentDoc=mp_doc;
context.m_pNewViewClass=NULL;//RUNTIME_CLASS(CEB666View);
context.m_pNewDocTemplate=NULL;//pDocTemplate;
context.m_pLastView=NULL;
context.m_pCurrentFrame=NULL;//pTreeFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,NULL, &context ))
return FALSE;
m_pMainWnd = pMainFrame;
第一个窗口
context.m_pCurrentDoc=mp_doc; //that's the way I avoid to create new document every time I open a new view
context.m_pNewViewClass=RUNTIME_CLASS(CChView);
context.m_pNewDocTemplate=pDocTemplate1;
context.m_pLastView=(((CMainFrame *)m_pMainWnd)->GetActiveFrame() ? ((CMainFrame *)m_pMainWnd)->GetActiveFrame()->GetActiveView() : NULL);
context.m_pCurrentFrame=((CMainFrame *)m_pMainWnd)->GetActiveFrame();
pChFrame->LoadFrame(IDR_MAINFRAME1,WS_OVERLAPPEDWINDOW ,m_pMainWnd, &context );
pChFrame->MoveWindow(0,0,725,500);
pChFrame->SetWindowText(g_LoadString("IDS_CHANNEL"));
pChFrame->InitialUpdateFrame(mp_doc,TRUE);第二个窗口
if(pFuncFrame!=NULL)
{
pFuncFrame->MDIActivate();
return;
}
pFuncFrame = new CChildFrame();
CCreateContext context;
context.m_pCurrentDoc=mp_doc; //that's the way I avoid to create new document every time I open a new view
context.m_pNewViewClass=RUNTIME_CLASS(CFucView);
context.m_pNewDocTemplate=pDocTemplate2;
context.m_pLastView=(((CMainFrame *)m_pMainWnd)->GetActiveFrame() ? ((CMainFrame *)m_pMainWnd)->GetActiveFrame()->GetActiveView() : NULL);
context.m_pCurrentFrame=((CMainFrame *)m_pMainWnd)->GetActiveFrame();
if (!pFuncFrame->LoadFrame(IDR_MAINFRAME1,WS_OVERLAPPEDWINDOW ,m_pMainWnd, &context ))return;
pFuncFrame->MoveWindow(20,30,695,520);
pFuncFrame->SetWindowText(g_LoadString("IDS_FUNCTION"));
pFuncFrame->InitialUpdateFrame(mp_doc,TRUE);
都是链接到mp_doc
void CEB666Doc::OnFileSave()
{
// TODO: Add your command handler code here
if(!GetPathName().IsEmpty())
{
CString szTemp=g_LoadString("IDS_WARN_SAVE");
szTemp += GetPathName();
if(AfxGetMainWnd()->MessageBox(szTemp,g_LoadString("IDS_PROMPT"),
MB_OKCANCEL | MB_ICONEXCLAMATION)==IDCANCEL)
return;
}
CDocument::OnFileSave();
}
烦高手 来解决下
Line: 290