请教关于MDI的问题
我用以下语句创建一个子窗口:
CChildFrame *pChildFrame = new CChildFrame();
CCreateContext context;
context.m_pNewViewClass = RUNTIME_CLASS(CMyForm2);
if (!pChildFrame->LoadFrame(IDD_FORMVIEW2|IDR_TESTTYPE|IDR_MAINFRAME, WS_CHILD|WS_OVERLAPPEDWINDOW, this, &context))
{
//return NULL;
;
}
pChildFrame->ShowWindow(SW_SHOW);
pChildFrame->InitialUpdateFrame(NULL, true);
// TODO: Add your command handler code here
为什么子窗口建立后,菜单栏依然是主窗口的菜单项,没有属于新子窗口的"窗口"菜单项.
请教高手是什么原因.谢谢!!!!!!!!!!
问题点数:20、回复次数:6Top
1 楼kongyunzhongque(云雀)回复于 2004-09-04 13:05:01 得分 20
LoadFrame(IDD_FORMVIEW2|IDR_TESTTYPE|IDR_MAINFRAME
一般就只Load一个Menu的菜单资源。IDR_MAINFRAME是多重资源Top
2 楼tony0347(星云)回复于 2004-09-04 15:16:42 得分 0
我试过只Load子窗口的菜单资源,可还是没有"窗口"菜单项Top
3 楼kongyunzhongque(云雀)回复于 2004-09-05 23:05:51 得分 0
默认的:IDR_TESTTYPE一般就有"窗口"菜单项,如果没有可以从其他地方拷贝过来。Top
4 楼tony0347(星云)回复于 2004-09-06 09:30:16 得分 0
菜单资源和图表资源的都是IDR_TESTTYPE,
LoadFrame(IDR_TESTTYPE,...)就可以吗?
从其他地方拷贝是什么意思.Top
5 楼kongyunzhongque(云雀)回复于 2004-09-06 22:41:10 得分 0
晚上我试了一下,以上的方法还是不能解决问题。因为LoadFrame里面会调用文档模板,而菜单会从文档模板的共享菜单里提,所以替代的方法是:
1、用建立一个新的文档模板,然后通过调用文档模板的OpenDocumentFile(NULL)函数的方式来创建新窗口。
新的文档模板的IDRESOURCE采用同一个资源ID,囊括Menu,stringtable,Accerlator,Icon等
对话框的资源ID会在FormView的构造函数里载入。
2、在FormView的InitUpdate里调用AfxGetMainWnd()->SetMenu(...);//未试
当然可能还有其他更好的方法,期待高手来解决。Top
6 楼tony0347(星云)回复于 2004-09-07 20:28:15 得分 0
在<<深入浅出MFC>>中有一个TEXT的例子,有些类似.
但是,它是在已经建立一个子窗口的基础上用MDIGetActive(),如果在主窗口的菜单栏或工具栏建立子窗口,还是会显示程序失败.Top




