VC 多文档MDI程序如何让它每次只能打开一个文档的实例????

laozhuang 2000-08-11 04:57:00
请各位VC高手帮帮忙!!!
VC 多文档MDI程序如何让它每次只能打开一个文档的实例????

我在做一个VC MDI多文档的程序时,想让每个文档模板
每次只能运行一个实例或者说每个文档每次只能打开一
个实例。不能打开第二个实例,我应该在什么地方添加
什么限制的代码?
请注意,不能用SDI程序来代替!!!

在CMytestApp类的InitInstance()中有如下代码:

BOOL CMytestApp::InitInstance()
{

if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}

AfxEnableControlContainer();

// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.

#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif

// Change the registry key under which our settings are stored.
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications"));

LoadStdProfileSettings(); // Load standard INI file options (including MRU)

// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views.

CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_HRNBSTYPE,
RUNTIME_CLASS(CHrnbsDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CHrnbsView));
AddDocTemplate(pDocTemplate);


………………………………………………………………
CMultiDocTemplate* pCxmxDocTemplate; //查询明细

//查询明细
{
pCxmxDocTemplate = new CMultiDocTemplate(
IDR_HRNBSTYPE,
RUNTIME_CLASS(CMytestDoc), // document class
RUNTIME_CLASS(CMDIChildWnd), // frame class
RUNTIME_CLASS(CCxmx)); // view class
AddDocTemplate(pCxmxDocTemplate);
}
……………………………………………………………………
// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
/*
//注释掉以便不让程序启动时出现新建的空文档
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;
*/

// The main window has been initialized, so show and update it.
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
pMainFrame->UpdateWindow();

return TRUE;
}


在MainFrame.cpp文件中的以下位置有以下代码:

在此打开一个多文档模板的一个实例,如何让它只能出一个窗口,不能多于一个窗口呢?
void CMainFrame::OnCxmx() //和菜单相关联
{
// TODO: Add your command handler code here
//查询明细
CFrameWnd* pNewFrame = (theApp.pCxmxDocTemplate)->CreateNewFrame(NULL, NULL);
if (pNewFrame == NULL)
return ;

(theApp.pCxmxDocTemplate)->InitialUpdateFrame(pNewFrame, NULL);
return;
}
...全文
265 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
laozhuang 2000-08-14
  • 打赏
  • 举报
回复
请问jiangsheng具体怎么调用应该加在哪个地方?是在声明的时候加入GetFirstDocumentPosition()?还是其它地方?
请帮我指明,好吗?谢谢!
蒋晟 2000-08-13
  • 打赏
  • 举报
回复
search GetFirstDocumentPosition in MSDN
蒋晟 2000-08-12
  • 打赏
  • 举报
回复
CDocTemplate::GetFirstDocumentPosition
CDocTemplate::GetNextDocument
laozhuang 2000-08-11
  • 打赏
  • 举报
回复
Laozhuang 我的Email:fj9lihu@sina.com,先谢谢各位!!!!

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧