我在做一个MDI界面,里面有三个文档,Template了三个CChildWnd派生类,我需要这样的要求:
1.主界面显示后不要MFC给我一个打开文档的对话框,我想自己显示这三个中的一个,或者都不显示。我想知道MFC到底是在什么时候把那个该死的对话框打开的?(当然我可以在前面三个文档模板添加的时候让其中的两个没有文档标题,那它就会自动打开有文档标题的那个。但这仍不在我的控制之内,不甘心!)
2.对于打开的文档的子框架,我想在它一打开的时候就最大化,不要SYSMENU,但不要SYSMENU我可以在PreCreateWindow里做到,可最大化的cs.style |= WS_MAXMIZE死活不起作用,这是怎么回事?如果不行的话,我要在哪里才能让子框架一开始就最大化?
3.程序运行中,我需要随时显示这三个子框架(文档)中的一个,我该怎么做?
1.主界面显示后不要MFC给我一个打开文档的对话框,我想自己显示这三个中的一个,或者都不显示。我想知道MFC到底是在什么时候把那个该死的对话框打开的?(当然我可以在前面三个文档模板添加的时候让其中的两个没有文档标题,那它就会自动打开有文档标题的那个。但这仍不在我的控制之内,不甘心!)
2.对于打开的文档的子框架,我想在它一打开的时候就最大化,不要SYSMENU,但不要SYSMENU我可以在PreCreateWindow里做到,可最大化的cs.style |= WS_MAXMIZE死活不起作用,这是怎么回事?如果不行的话,我要在哪里才能让子框架一开始就最大化?
3.程序运行中,我需要随时显示这三个子框架(文档)中的一个,我该怎么做?
MDI
在程序的InitInstance中的ProcessShellCommand函数之前加入:
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing
SDI
InitInstance函数中关于OnFileNew的调用去掉2
MDI子窗口一启动就最大化
方法一:
在CChildFrame::PreCreateWindow(CREATESTRUCT& cs)函数中,加了
cs.style|=WS_VISIBLE|WS_MAXIMIZE;,可以实现了
方法二:
用ClassWizard为CChildFrame类添加ActiveFrame消息
void CChildFrame::ActivateFrame(int nCmdShow)
{
if(GetMDIFrame()->MDIGetActive())
CMDIChildWnd::ActivateFrame(nCmdShow);
else // else open maximized.
CMDIChildWnd::ActivateFrame(SW_SHOWMAXIMIZED); }
这里的两个方法我都试过可以3 你是要视图切换吗?
3.是的。其实我是想用多文档模仿一个单文档多视。我希望在我的菜单里一点就能迅速切换到另一个文档框架。该怎么做呢?