我想用新view 在FRAME中换掉原来的view 怎么做? 我想用新view 在FRAME中换掉原来的view 怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MFC的MDI程序产生的视是同种类型的视,已有很多文章讲过如何实现真真的多视。这里介绍一种简单的实现方法。在MDI程序的CChildFrame类中加入一个CreateView函数,调用它可实现不同类型的共存,当然你也可以删除它。1.定义两个变量UINT m_DocType;//选择的文档 UINT m_nCurrentExample=0;//当前的文档类型void CChildFrame::CreateViewDoc(){ // TODO: Add your command handler code here CView* pOldActiveView = GetActiveView(); ::SetWindowLong(pOldActiveView->m_hWnd, GWL_ID, m_nCurrentExample); CRuntimeClass* pNewViewClass; switch (m_DocType) { case 1://由不同的文档类型,调用不同的视类,下面是两个假设的视 pNewViewClass = RUNTIME_CLASS(CFileScopeView); break; case 2: // pNewViewClass = RUNTIME_CLASS(CRTFView); break; default: ASSERT(0); return; } //创建新的视 CCreateContext context; context.m_pNewViewClass = pNewViewClass; context.m_pCurrentDoc = GetActiveDocument(); CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&context)); if (pNewView != NULL) { // 创建成功则显示。 pNewView->ShowWindow(SW_SHOW); SetActiveView(pNewView); m_nCurrentExample = m_DocType; // 如果需要,可关闭当前视 pOldActiveView->DestroyWindow(); pNewView->OnInitialUpdate(); RecalcLayout(); } else { AfxMessageBox("显示失败"); }} 寻一算法 数组与按钮关联 请教一个抓包的问题 'AfxSetResourceHandle' : undeclared identifier 子线程向主线程发送消息后,消息响应函数会不会结束子线程的剩余时间片? 关于WM_CHAR和MessageBox 新手问题!!在vc中如何创建个进程!如何加个信号量! 利用ImageList透明贴图一问..... 请教:(VC开发环境中)宏的运行机理?谢谢! 关于CTreeCtrl的问题,请大家指点 如何把数据源的对话框去掉,100分送,在线等!!! 请问VC6.0版本编译,中文版英文版问题?
UINT m_nCurrentExample=0;//当前的文档类型void CChildFrame::CreateViewDoc()
{
// TODO: Add your command handler code here
CView* pOldActiveView = GetActiveView(); ::SetWindowLong(pOldActiveView->m_hWnd, GWL_ID, m_nCurrentExample); CRuntimeClass* pNewViewClass;
switch (m_DocType)
{
case 1://由不同的文档类型,调用不同的视类,下面是两个假设的视
pNewViewClass = RUNTIME_CLASS(CFileScopeView);
break;
case 2:
// pNewViewClass = RUNTIME_CLASS(CRTFView);
break;
default:
ASSERT(0);
return;
} //创建新的视
CCreateContext context;
context.m_pNewViewClass = pNewViewClass;
context.m_pCurrentDoc = GetActiveDocument();
CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&context));
if (pNewView != NULL)
{
// 创建成功则显示。
pNewView->ShowWindow(SW_SHOW);
SetActiveView(pNewView);
m_nCurrentExample = m_DocType;
// 如果需要,可关闭当前视
pOldActiveView->DestroyWindow();
pNewView->OnInitialUpdate();
RecalcLayout();
}
else
{
AfxMessageBox("显示失败");
}
}