标题:CWnd::GetDlgItem 在本程序中的作用
取消只看楼主
muxiaoyao
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-7-28
 问题点数:0 回复次数:1 
CWnd::GetDlgItem 在本程序中的作用
在论坛中看了版主的“窗口切换分割详解”一文,对第一个程序中的一句话很不理解,如下:

void CMainFrame::SwitchToView(eView nView)
{
CView* pOldActiveView = GetActiveView();
CView* pNewActiveView = (CView*) GetDlgItem(nView);//就是这句,好像用它得到的pNewActiveView一直都是NULL,我把它换成下面一句,程序照样可以运行,给个理由?
// CView* pNewActiveView = NULL;
if (pNewActiveView == NULL)
{
switch (nView)
{
case View1:
pNewActiveView = (CView*) new CView1;
break;
case View2:
pNewActiveView = (CView*) new CView2;
break;
case View3:
pNewActiveView = (CView*) new CTestView;
break;
}
CCreateContext context;
context.m_pCurrentDoc = pOldActiveView->GetDocument();
pNewActiveView->Create(NULL, NULL, WS_BORDER|WS_CHILD,
CFrameWnd::rectDefault, this, nView, &context);
pNewActiveView->OnInitialUpdate();
}

SetActiveView(pNewActiveView);
pNewActiveView->ShowWindow(SW_SHOW);
pOldActiveView->ShowWindow(SW_HIDE);
pOldActiveView->SetDlgCtrlID(m_nCurrentView);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_nCurrentView = nView;
RecalcLayout();
}
搜索更多相关主题的帖子: CWnd GetDlgItem 
2007-07-29 15:15
muxiaoyao
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-7-28
得分:0 
通过我自己的分析,这个地方CView* pNewActiveView = (CView*) GetDlgItem(nView); nView根本不是一个View类,也不是一个控件,它仅是一个enum结构的成员,所以个人感觉这样写是没有道理的,请高手指正
2007-07-29 15:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-158950-1-1.html




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

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