我利用CChileFrame *myframe[2]创建了2个子框架,没有重载任何CMDIChildWnd的函数,也没有任何消息处理函数。
每个子框架初始化时指定了SW_SHOWMAXIMIZED。
同时,有2个对话框,继承FormView,将其分别加入到2个子框架中。2个对话框分别实现了onsize消息处理。故可以动态跟随框架改变大小(起始就是保持其充满框架的客户区)。创建框架函数如下:
m_childFrame[0] = new CChildFrame;
m_childFrame[1] = new CChildFrame;
CCreateContext context;
context.m_pNewViewClass = RUNTIME_CLASS(CView1);
m_childFrame[0]->LoadFrame(IDR_MAINFRAME, WS_MAXIMIZEBOX, this, &context);
m_childFrame[0]->ShowWindow(SW_SHOWMAXIMIZED);
m_childFrame[0]->InitialUpdateFrame(NULL, true);context.m_pNewViewClass = RUNTIME_CLASS(CView2);
m_childFrame[1]->LoadFrame(IDR_MAINFRAME, WS_MAXIMIZEBOX, this, &context);
m_childFrame[1]->ShowWindow(SW_SHOWMAXIMIZED);
m_childFrame[1]->InitialUpdateFrame(NULL, true);此时如果显示的话是m_childFrame[1]为当前活动窗口。并且显示的对话框(CView2)是最大化的。我想的是让m_childFrame[0]显示到最前面(由于有显示标签,所以不能交换生成顺序)。此时在上面代码最后加入如下代码:m_childFrame[0]->ActivateFrame(SW_SHOWMAXIMIZED);
运行时m_childFrame[0]为活动框架并且框架是最大化的,但是其显示的对话框(CView1)却变成了资源框设计时的大小。如果此时点击框架m_childFrame[1],再点击m_childFrame[0],对话框(CView1)又最大化了。
怎么解决这个问题,要先生成的框架最先显示,而且其中包含的视图对话框能最大化,需要发送什么消息还是怎么做?在对话框视图的OnInitialUpdate中指定是没用的,我试过了。