大家好现在有一个问题想请教一下 谢谢各位了

xxrl 2005-05-15 02:58:02
多文档结构
现在我再CMainFrame中向遍历打开的view ,但我双击一个数的条目时候 打开相应的view 如果这个view不存在 则新建一个,存在就激活

这么一个过程创建直接调用app中的相关函数创建即可
可是这个激活已经打开的 我不会 ,各位能教教我吗?
因为打开了很多的view 只有一个是在前端激活的,其他的在后面 怎么激活它呢?
谢谢各位
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxrl 2005-05-23
  • 打赏
  • 举报
回复
谢谢 yuanchao111(袁超)
回去我会好好研究一下的 !
yuanchao111 2005-05-17
  • 打赏
  • 举报
回复
我的代码中正好有类似你所需要的,给你贴出来

void CMainFrame::OnSwitchView(UINT nCmdID)
{
if (nCmdID == m_nCurrentView)
return; // already selected

// Set the child window ID of the active view to AFX_IDW_PANE_FIRST.
// This is necessary so that CFrameWnd::RecalcLayout will allocate
// this "first pane" to that portion of the frame window's client
// area not allocated to control bars. Set the child ID of
// the previously active view to some other ID; we will use the
// command ID as the child ID.
CView* pOldActiveView = GetActiveView();
::SetWindowLong(pOldActiveView->m_hWnd, GWL_ID, m_nCurrentView);

CView* m_pNewView = NULL;
m_pNewView = (CView* )GetDlgItem(nCmdID);
if(!(m_pNewView != NULL && m_pNewView ->GetSafeHwnd() != NULL))
{
CRuntimeClass* pNewViewClass;
switch (nCmdID)
{
case ID_XXX_VIEW:
pNewViewClass = RUNTIME_CLASS(CXXXView);
break;
case ID_YYY_VIEW:
pNewViewClass = RUNTIME_CLASS(CYYYView);
break;

default:
ASSERT(0);
return;
}

// create the new view
CCreateContext context;
context.m_pNewViewClass = pNewViewClass;
context.m_pCurrentDoc = GetActiveDocument();
CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&context));
if (pNewView != NULL)
{
pOldActiveView->ShowWindow(SW_HIDE);
// the new view is there, but invisible and not active...
pNewView->ShowWindow(SW_SHOW);
pNewView->OnInitialUpdate();
//pNewView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
SetActiveView(pNewView);
RecalcLayout();
m_nCurrentView = nCmdID;
}
}
else
{
//AfxMessageBox("m_pPhotoListView != NULL");
m_pNewView ->ShowWindow(SW_SHOW);
m_pNewView ->EnableWindow(TRUE);
SetActiveView(m_pNewView );

pOldActiveView->ShowWindow(SW_HIDE);
pOldActiveView->EnableWindow(FALSE);

m_nCurrentView = nCmdID;
m_pNewView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
//m_pEmailView->Invalidate();
RecalcLayout();
}
}
vcmute 2005-05-17
  • 打赏
  • 举报
回复
MDIActivate
chen18s 2005-05-17
  • 打赏
  • 举报
回复
SetAcitveView正解
koko1998 2005-05-17
  • 打赏
  • 举报
回复
mark
oyljerry 2005-05-17
  • 打赏
  • 举报
回复
CView* pView;
POSITION pos = GetFirstViewPosition();

while(pos!=NULL)
{
pView = GetNextView(pos);
if(!pView->IsKindOf(pClass))
break;
}
遍历view
xqk 2005-05-15
  • 打赏
  • 举报
回复
up
oyljerry 2005-05-15
  • 打赏
  • 举报
回复
setactiveview

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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