MDI,SDI创建过程中的一点不同--发布日期:2007-8-31

原创 2008年10月02日 18:35:00

CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
   IDR_MDISQUTYPE,
   RUNTIME_CLASS(CSquaresDoc),
   RUNTIME_CLASS(CChildFrame), // custom MDI child frame
   RUNTIME_CLASS(CSquaresView));
AddDocTemplate(pDocTemplate);

// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
   return FALSE;
m_pMainWnd = pMainFrame;

。。。。。。。。

   // 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(m_nCmdShow);
pMainFrame->UpdateWindow();

上面为MDI,下面为SDI

CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
   IDR_MAINFRAME,
   RUNTIME_CLASS(CSquaresDoc),
   RUNTIME_CLASS(CMainFrame),       // main SDI frame window
   RUNTIME_CLASS(CSquaresView));
AddDocTemplate(pDocTemplate);

。。。。。。。。。。

// 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(m_nCmdShow);
pMainFrame->UpdateWindow();

主要是在生产文档模板对象时RUNTIME_CLASS(CChildFrame), // custom MDI child frame
VS RUNTIME_CLASS(CMainFrame),       // main SDI frame window
MDI传递的是childframe,而SDI传递的mainframe,因此MDI的ProcessShellCommand创建的是ChildFrame而SDI创建的MainFrame,所以MDI中就多出了

// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
   return FALSE;
m_pMainWnd = pMainFrame;

必须自己创建MainFrame.

请问如何在扩展 DLL 中创建应用程序框架?如何在DLL中创建窗体(SDI/MDI)?非常急!!!!!!!

请问如何在扩展 DLL 中创建应用程序框架?如何在DLL中创建窗体(SDI/MDI)?非常急!!!!!!!...
  • zhongheming
  • zhongheming
  • 2005年04月12日 16:40
  • 568

SDI MDI 中不创建 菜单, 工具栏等

主要在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 函数中对 cs 进行处理BOOL CMainFrame::PreCreateWindow(C...
  • lxlgxjj
  • lxlgxjj
  • 2007年11月10日 22:05
  • 262

如何实现SDI与MDI的转换?

如何实现SDI与MDI的转换?如何实现SDI与MDI的转换?如果想将一个编好的SDI应用程序转换为MDI,首先要建立一个继承于CMDIChidWnd的类,假设为CChldFrm,在CWinApp中作如...
  • tawe
  • tawe
  • 2001年06月19日 21:44
  • 452

在mfc的sdi/mdi程序任意视图view内创建可停靠及浮动的工具栏方法

 第一种方式是在此view的对应doc模板CFrameWnd子类的OnCreate函数中添加创建代码由于mdi的模板多个view可能是公用一个CFrameWnd子类。此方法控制不太灵活但是简单第二种方...
  • abesky
  • abesky
  • 2007年10月13日 10:10
  • 5086

R语言学习:R安装

R安装地址: http://cran.r-project.org Download R for Windows -> base -> Download R 3.2.3 for Windows (62...
  • Angel_YJ
  • Angel_YJ
  • 2016年02月14日 15:43
  • 5207

VC MFC SDI/MDI框架各部分指针获取方式

VC MFC SDI/MDI框架各部分指针获取方式 前人在CSDN总结的,曾经帮助过我,整理总结一下,希望也能帮助一下别人。      获得CWinApp 获得CMainFr...
  • u011478505
  • u011478505
  • 2013年09月21日 13:17
  • 1917

MFC MDI和SDI美化----之客户区美化

1、美化方式:贴图,重绘背景 2、一、MDI客户窗口   一个MDI应用的主框架窗口包含一个特殊的子窗口称为MDICLIENT窗口。MDICLIENT窗口负责管理主框架窗口的客户区。MDICLIE...
  • wzy198852
  • wzy198852
  • 2014年02月12日 09:53
  • 3069

MFC MDI和SDI非客户区框架界面美化之----标题栏以及边框美化

1、美化方式:贴图、重绘       优点:简单,易理解!适合       缺点:美化限制较大,实际使用意义不大。 2、基本思路是重载CMainFrame类的DefWindowProc()函数,并判断...
  • wzy198852
  • wzy198852
  • 2014年02月12日 09:29
  • 5801

关于MDI的winform开发

我们在开发窗体应用程序时,经常会碰到这样的layout需求,上方为Menu,左侧为SideBar,右侧为MDI container. 为了实现以上窗体布局,我们可以在Form的load事件中动态加载m...
  • xbgprogrammer
  • xbgprogrammer
  • 2010年01月15日 11:33
  • 427

如何在MFC的SDI程序中实现多视图

我们都知道MFC里的SDI程序实现了Frame-Doc-View结构,在这种模型中,实现了一个文档对应一个VIEW,而MDI则实现了多文档多视图模型。 但很多时候我们的程序不需要多文档,但希望能...
  • u012938203
  • u012938203
  • 2014年11月03日 23:26
  • 478
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MDI,SDI创建过程中的一点不同--发布日期:2007-8-31
举报原因:
原因补充:

(最多只允许输入30个字)