| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 879 人关注过本帖
标题:[转载]关于CFormView的....
只看楼主 加入收藏
m8311011725
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-3-11
收藏
 问题点数:0 回复次数:0 
[转载]关于CFormView的....

下面是在静态拆分窗口中切换不同View的方法

可是这句
CRuntimeClass *pViewClass=RUNTIME_CLASS(CFormDataView);

用CListView或者其它View类派生的类运行起来都没有问题

但是我希望的CFormView类却总是运行错误~


注:我建立CFormView的方法是插入一个dialog资源,设计好了以后用wizzard插入一个CFormView类
这样是不是不对啊?


//为了实现,函数中已经把类型设定好了~

BOOL CMainFrame::SetActivePage()
{
CRuntimeClass *pViewClass=RUNTIME_CLASS(CFormDataView);
int row=0;
int col=1;
CSize size(100, 100);
CCreateContext context;
BOOL bSetActive;

if ((this->m_wndSplitter.GetPane(row, col)->IsKindOf(pViewClass)) == TRUE)
return FALSE;

//获取文档对象的指针,以便在创建新视图的过程中能够使用它
CDocument *pDoc = ((CView*)m_wndSplitter.GetPane(row, col))->GetDocument();

CView *pActiveView = this->GetActiveView();
if (pActiveView == NULL || pActiveView == m_wndSplitter.GetPane(row, col))
bSetActive = TRUE;
else
bSetActive = FALSE;

pDoc->m_bAutoDelete = FALSE; //设置标志,这样当视图销毁时不会删除文档
((CView*)m_wndSplitter.GetPane(row, col))->DestroyWindow(); //删除存在的视图
pDoc->m_bAutoDelete = TRUE; //设回默认的标志


//创建新视图
context.m_pNewViewClass = pViewClass;
context.m_pCurrentDoc = pDoc;
context.m_pNewDocTemplate = NULL;
context.m_pLastView = NULL;
context.m_pCurrentFrame = NULL;
//m_wndSplitter.DeleteView(0, 1);
m_wndSplitter.CreateView(row, col, pViewClass, size, &context);

CView *pNewView = (CView*)m_wndSplitter.GetPane(row, col);

if (bSetActive == TRUE)
this->SetActiveView(pNewView);

m_wndSplitter.RecalcLayout(); //重新计算位置
// m_wndSplitter.GetPane(row,col)->SendMessage(WM_PAINT);

return TRUE;
}

搜索更多相关主题的帖子: CFormView wizzard pViewClass CLASS BOOL 
2006-10-19 15:03
快速回复:[转载]关于CFormView的....
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015703 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved