none
如何使mdi的子窗口移出主框架外 RRS feed

  • 问题

  • 如题,我想把一个多文档的视图移动到主框架外,网上基本没有相关资料,

    求教:

    1、是否可行?

    2、如果可行能给出示例或在哪里找到帮助;

    3、此办法不可行的时候有什么解决方案吗?

    2012年9月18日 5:27

答案

  • 子框架窗口受限于父框架窗口的显示区域,除非子框架窗口调用SetParent()修改所属的父窗口为其它窗口。但是这样会带来其它一系列的问题(比如点击File菜单的New菜单项,程序有可能会崩溃)。

    您可以直接弹出一个窗口出来,类似这样:
    CFrameWnd* pFrame = new CFrameWnd;
    	CCreateContext cc;
    	cc.m_pCurrentDoc = NULL;
    	cc.m_pCurrentFrame = pFrame;
    	cc.m_pNewViewClass = RUNTIME_CLASS(CXXXView);
    	pFrame->Create(NULL, _T("Frame"), WS_OVERLAPPEDWINDOW, CFrameWnd::rectDefault, NULL, NULL, 0, &cc);
    	pFrame->ShowWindow(SW_SHOW);
    	pFrame->UpdateWindow();


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2012年9月19日 2:32
    版主

全部回复

  • 子框架窗口受限于父框架窗口的显示区域,除非子框架窗口调用SetParent()修改所属的父窗口为其它窗口。但是这样会带来其它一系列的问题(比如点击File菜单的New菜单项,程序有可能会崩溃)。

    您可以直接弹出一个窗口出来,类似这样:
    CFrameWnd* pFrame = new CFrameWnd;
    	CCreateContext cc;
    	cc.m_pCurrentDoc = NULL;
    	cc.m_pCurrentFrame = pFrame;
    	cc.m_pNewViewClass = RUNTIME_CLASS(CXXXView);
    	pFrame->Create(NULL, _T("Frame"), WS_OVERLAPPEDWINDOW, CFrameWnd::rectDefault, NULL, NULL, 0, &cc);
    	pFrame->ShowWindow(SW_SHOW);
    	pFrame->UpdateWindow();


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2012年9月19日 2:32
    版主
  • 谢谢,可是这样的话创建的窗口应该会有标题栏吧?

    而且 最大最小化的时候相关的onpaint是不是得自己重写?

    我现在已经创建了一个,就是最大最小的时候会有问题

    2012年9月20日 14:05