我用CJLibrary想做成OutLookBar风格的框架,按Bar上的按钮实现单文档切换,每一个文档都是CFormView,请问如何实现,分好说。
解决方案 »
- 高手留步!VC6 无法调用ActiveX DLL
- 求教!关于作弊器的制作
- 有没有办法看到交换机的MAC地址
- Sleep期间当前程序是否还能继续执行其它任务?UP有分。
- 兑现sinall老兄的400分(其他人免入)—— 3
- 如何直接在内存中实时生成几何图形,并以位图格式保存到剪贴板或者保存成文件
- 请问哪里有介绍:vc开发的UI准则的?
- MSComm控件的GetCommEvent()函数返回值有那些,分别代表什么?
- 怎样从CFileDialog中获得所选文件的类型
- Win32开发中 ,syslistview32 列表框无法选中
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~对面的高手瞧过来~~~~~~~~~~~~~~~~~~~~~~~
- dao数据库不能关闭
不过不是FORMVIEW的
全是派生自CVIEW的
下面是一个如何实现普通的单文档程序视图切换的一点简单说明
1.为每个视图定义ID
2.定义个SwitchView(nvID)的函数CView *pOld=GetActiveView();
CView *pNew=(CView*)GetDlgItem(nvID);
if(pNew==NULL)//如果第一次的话
{
switch(nV)
{
case IDVIEW_XXX:
pNew=(CView*) new CMyViewXXX;
break;
case IDVIEW_XXX:
pNew=(CView*) new CMyViewXXX;
break;
}
CCreateContext context;
context.m_pCurrentDoc=pOld->GetDocument();
pNew->Create(NULL,NULL,WS_BORDER,
CFrameWnd::rectDefault,this,nvID,&context);
pNew->OnInitialUpdate();
}
this->SetActiveView(pNew);
pNew->ShowWindow(SW_SHOW);
pOld->ShowWindow(SW_HIDE);pOld->SetDlgCtrlID(
pOld->GetRuntimeClass()==RUNTIME_CLASS(CMyEdit)?0:1);
//此处必须旧的视图的ID改回你设置的ID,因为当它活动的时候
//ID是AFX_IDW_PANE_FIRST
pNew->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
//当前活动视图ID必须是AFX_IDW_PANE_FIRST
this->RecalcLayout();4.菜单设置
pCmdUI->Enable(!GetActiveView()->IsKindOf(RUNTIME_CLASS(CMyView))); 希望对你有所帮助!