一个文挡对应多个VIEW 我是一个单文档程序,将VIEW静态拆分成三个,我不知道怎么让这三个VIEW都和DOC联系起来。希望给点代码,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vckbase.com/document/viewdoc/?id=192 视图在CMainFrame中OnCreateClient时会通过createview的调用CCreateContext的参数与文档关联在一起。 最熟悉的陌生人:你让我看的文章我看过了,里面说要在程序初始化的时候加入: AddDocTemplate (new CMultiDocTemplate(IDR_FRAME, RUNTIME_CLASS(CTestDocMulViewDoc), RUNTIME_CLASS(CMDIChildWnd), RUNTIME_CLASS(CPictureView)));这几句的作用是什么啊?我没加这几句程序好象也没什么问题。 我在自己建的VIEW里执行GetDocument(),可是找不到DOC啊? 把基类里的GetDocument函数拷过来就可以调用返回了! 有两种方法:一:是静态切分时创建视图时让你指定Context里包含DOC的指针。二:AfxGetApp、GetFirstDocumentTel、、、、、 "是静态切分时创建视图时让你指定Context里包含DOC的指针"我就是静态切分,不知道怎么指定Context里包含DOC的指针啊,我不太会,能不能给点代码啊~~~ 多个视共享同一文档框架,但从不同的视类创建,每个视可以为文档提供不同的观察和编辑方法。比如一个视用图形观察文档,而另一个视用文本编辑文档中对象的属性。这种情况也适应于用不同的视来观察文档的不同部分。这种类型的实现方法是通过重载OnCreateClient函数实现。下面的例子实现了图中的分割窗口。 BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT,CCreateContext* pContext) { RECT rect; // 先分割为 1X2的形式 m_wndSplitter1.CreateStatic(this, 1, 2, WS_CHILD | WS_VISIBLE ); m_wndSplitter1.SetColumnInfo(0,300,0); // 设置第一列的宽度 // 将第一列进一步分割为 2X1的形式 m_wndSplitter2.CreateStatic( &m_wndSplitter1,2, 1, WS_CHILD | WS_VISIBLE, m_wndSplitter1.IdFromRowCol(0, 0)); // 创建各个视 m_wndSplitter1.CreateView(0, 1,RUNTIME_CLASS(CviewView1), CSize(0, 0), pContext); m_wndSplitter2.CreateView(0, 0,RUNTIME_CLASS(CviewView2), CSize(0, 0), pContext); m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CviewView3), CSize(0, 0), pContext); ...... } 是这样的,我建立了一个SDI程序,向导自己生成了一个DOC和一个VIEW类,我现在拆分了窗口,就象上面写的那样BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT,CCreateContext* pContext){ m_wndSplitter1.CreateStatic(this, 1, 2, WS_CHILD | WS_VISIBLE ); m_wndSplitter1.CreateView(0, 0,RUNTIME_CLASS(CTestView), CSize(0, 0), pcontext); m_wndSplitter1.CreateView(0, 1,RUNTIME_CLASS(CMyView), CSize(0, 0), pContext);}其中CTestView是向导生成的VIEW类,CMyView是我自己生成的继承自CView的类。在这两个View类的OnDraw中我分别进行了一些显示DOC的操作,但是CMyView类中我无法获得DOC的指针。 无法获得DOC的指针是什么概念呢?返回空值?把CTestView中的GetDocument()考到CMyView中试试? opencv把一个图片分块后再组成到一起的方法 新年新气象!祝大家好运2010! 谁能提供一个符合要求的tabcontrol类和controlbar类? 简单的类型转换 关于按钮的一些问题。。请各位帮忙一下。。 请教:如何将数据进行HTTP协议封装? 如何控制license的有效期,防止用户更改系统时间(单机,不能联网) 请问怎么样调出拨号上网对话框(包括ADSL)、专线上网对话框(如果有的话)? 接口成员函数的实现在那定义? winmain的问题 CFile::Read问题 30分 基本WinSock编程问题
AddDocTemplate (new CMultiDocTemplate(IDR_FRAME,
RUNTIME_CLASS(CTestDocMulViewDoc),
RUNTIME_CLASS(CMDIChildWnd),
RUNTIME_CLASS(CPictureView)));
这几句的作用是什么啊?我没加这几句程序好象也没什么问题。
一:是静态切分时创建视图时让你指定Context里包含DOC的指针。
二:AfxGetApp、GetFirstDocumentTel、、、、、
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT,CCreateContext* pContext) { RECT rect; // 先分割为 1X2的形式 m_wndSplitter1.CreateStatic(this, 1, 2, WS_CHILD | WS_VISIBLE ); m_wndSplitter1.SetColumnInfo(0,300,0); // 设置第一列的宽度 // 将第一列进一步分割为 2X1的形式 m_wndSplitter2.CreateStatic( &m_wndSplitter1,2, 1, WS_CHILD | WS_VISIBLE, m_wndSplitter1.IdFromRowCol(0, 0)); // 创建各个视 m_wndSplitter1.CreateView(0, 1,RUNTIME_CLASS(CviewView1), CSize(0, 0), pContext); m_wndSplitter2.CreateView(0, 0,RUNTIME_CLASS(CviewView2), CSize(0, 0), pContext); m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CviewView3), CSize(0, 0), pContext); ...... }
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT,CCreateContext* pContext)
{
m_wndSplitter1.CreateStatic(this, 1, 2, WS_CHILD | WS_VISIBLE );
m_wndSplitter1.CreateView(0, 0,RUNTIME_CLASS(CTestView), CSize(0, 0), pcontext);
m_wndSplitter1.CreateView(0, 1,RUNTIME_CLASS(CMyView), CSize(0, 0), pContext);
}
其中CTestView是向导生成的VIEW类,CMyView是我自己生成的继承自CView的类。在这两个View类的OnDraw中我分别进行了一些显示DOC的操作,但是CMyView类中我无法获得DOC的指针。