WEB开发网
开发学院软件开发VC 用VC++在单文档界面中创建多视图 阅读

用VC++在单文档界面中创建多视图

 2010-05-25 20:36:58 来源:WEB开发网   
核心提示:2.创建新的视图CDocument* pCurrentDoc = ((CFrameWnd*) m_pMainWnd)->GetActiveDocument();// 初始化创建上下文相关指针CCreateContext newContext;newContext.m_pNewViewClass = RUNTIME

2.创建新的视图

CDocument* pCurrentDoc = ((CFrameWnd*) m_pMainWnd)->GetActiveDocument();
// 初始化创建上下文相关指针
CCreateContext newContext;
newContext.m_pNewViewClass = RUNTIME_CLASS(CView1);
newContext.m_pCurrentDoc = pCurrentDoc;
newContext.m_pNewDocTemplate = NULL;
newContext.m_pLastView = NULL;
newContext.m_pCurrentFrame = NULL;
CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&newContext));
if( pNewView == NULL )
{
return FALSE;
}
// 使用CreateView创建的视图不能自动调用OnInitialUpdate函数,需要人工调用OnInitialUpdate函数或者发送WM_INITIALUPDATE消息
pNewView->OnInitialUpdate();
// 使用CreateView创建的视图不会自动显示并且激活,需要人工操作
pNewView->ShowWindow(SW_SHOW);
SetActiveView(pNewView);
RecalcLayout();

注:RUNTIME_CLASS宏含义

每一个从CObject类继承的类,在定义DECLARE_DYNAMIC、DECLARE_DYNCREATE、DECLARE_SERIAL三个中任意一个宏时都会产生一个CRuntimeClass结构的静态对象,RUNTIME_CLASS返回的就是这个对象的指针,这个对象包含了其基类和本身在运行时刻的信息。以上是笔者在编写多个视应用在单文档的程序时整理出来的两种方法,因为VC++的强大和灵活,笔者相信还有更加巧妙的方法实现这个功能,希望这篇文章能够起到抛砖引玉的作用,也希望广大VC++编程爱好者对本文能够给予批评和指正。

上一页  1 2 3 

Tags:VC 文档 界面

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接