MDI窗口中 怎样才能建立一个子窗口?

caosheng 2004-11-21 03:14:45
我的问题和这个帖子的问题差不多:http://community.csdn.net/Expert/topic/3512/3512182.xml?temp=.2532465 ,但是我按着这个帖子的步骤作怎么也做不出来。
我的步骤是这样的:
(1)新建一个多文档的工程:Try
(2)删除了CTryApp::InitInstance()里的如下代码:
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_TRYTYPE,
RUNTIME_CLASS(CTryDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CTryView));
AddDocTemplate(pDocTemplate);
(3)添加一个对话框资源IDD_TEST
(4)使用classwizard添加一个对应IDD_TEST的类CTestView(从CFormView派生)
(5)在CMainFrame建立一个指针CChildFrame *m_pFrame;初始化为0
(6)在一个菜单相应函数中添加如下代码:
if(m_pFrame!=NULL)
{
m_pFrame->MDIDestroy();
}

m_pFrame=new CChildFrame();
CCreateContext context;
context.m_pNewViewClass=RUNTIME_CLASS(CTestView);
if(!m_pFrame->LoadFrame(IDD_TEST,WS_MAXIMIZE|WS_OVERLAPPEDWINDOW,this,&context))
{
return ;
}
m_pFrame->ShowWindow(SW_SHOWMAXIMIZED);
m_pFrame->InitialUpdateFrame(NULL,true);
(7)编译无语法错误,但是点击菜单总是抱错,不知道是位什么?

谢谢。
...全文
164 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
caosheng 2004-12-02
  • 打赏
  • 举报
回复
结帖了,谢谢大家了,呵呵,对话框的一个属性我没有设对所以一直报错。
EnochShen 2004-12-01
  • 打赏
  • 举报
回复
我的那种方法不好用吗?
不可能啊~
56xue 2004-12-01
  • 打赏
  • 举报
回复
在CMainFrm.cpp中加入#include "TestView.h"
caosheng 2004-11-21
  • 打赏
  • 举报
回复
laiyiling(陌生人·100%·小象) :
我是新手,你能说的再详细一点吗?
Kudeet 2004-11-21
  • 打赏
  • 举报
回复
那只是建立一个框架,你需要把你的视图加进去
caosheng 2004-11-21
  • 打赏
  • 举报
回复
还有就是这个子窗口不用有与它对应的文档类。
caosheng 2004-11-21
  • 打赏
  • 举报
回复
laiyiling(陌生人·100%·小象) :
你的方法我用了,但是跟我想做的不太一样。我用对话框的资源标识IDD_TEST调用
CreateNewChild(RUNTIME_CLASS(CMyMDIChildWnd),
IDD_TEST,NULL);
创建的子窗口不是基于那个对话框的标识的窗口,新创建的子窗口一个控件都没有。我想创建的子窗口是基于这个对话框标识的。
你能再详细的跟我解释一下吗?
EnochShen 2004-11-21
  • 打赏
  • 举报
回复
晕,大括号外面。这个样子

CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate
(
IDR_MAINTYPE//你的资源可以自己创建,
RUNTIME_CLASS(//CYourDoc),
RUNTIME_CLASS(//CYourChildFrame),
RUNTIME_CLASS(//CYourView));
}
pDocTemplate->OpenDocumentFile(NULL);

EnochShen 2004-11-21
  • 打赏
  • 举报
回复
少了一句,再大括号里面加上 pDocTemplate->OpenDocumentFile(NULL);
呵呵
EnochShen 2004-11-21
  • 打赏
  • 举报
回复
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate
(
IDR_MAINTYPE//你的资源可以自己创建,
RUNTIME_CLASS(//CYourDoc),
RUNTIME_CLASS(//CYourChildFrame),
RUNTIME_CLASS(//CYourView));
}
Kudeet 2004-11-21
  • 打赏
  • 举报
回复
先建立两个类
class CMyMDIChildWnd : public CMDIChildWnd
class CMyView : public CView
然后在:
void CMainFrame::OnCreateMyFrame()
{
CMDIChildWnd* pWnd = CreateNewChild(RUNTIME_CLASS(CMyMDIChildWnd),
IDR_MAINFRAME,NULL);
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧