Win32 框架文档视图(2)
来源:互联网 发布:淘宝店铺装修网站 编辑:程序博客网 时间:2024/06/06 07:13
5.10 如何删除SDI框架窗口中的菜单
DestroyMenu
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){ if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; if (cs.hMenu != NULL) { //删除菜单 DestroyMenu(cs.hMenu); //设置菜单句柄值为NULL cs.hMenu = NULL; } return TRUE;}
5.11 如何删除MDI框架窗口中的菜单
同上方法
5.12 如何改变视图的背景颜色
在OnEraseBkgnd事件中填充
BOOL CDemoView::OnEraseBkgnd(CDC* pDC) { //获得客户区大小 CRect rect; GetClientRect(rect); //填充背景 pDC->FillRect(&rect, &m_Brush); return TRUE;}
5.13 如何改变MDI主框架窗口的背景颜色
同上方法
5.14 如何使MDI启动时不生成新的子窗口
设置CCommandLineInfo的m_nShellCommand 字段
CCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
5.15 如何排列MDI子框架窗口
MDITile和MDICascade方法
void CMainFrame::OnTilehWnd() { //水平显示 MDITile(MDITILE_HORIZONTAL); }void CMainFrame::OnTilevWnd() { //垂直显示 MDITile(MDITILE_VERTICAL);}void CMainFrame::OnCascadeWnd() { //层叠显示 MDICascade();}
5.16 如何在SDI中切换多视图
- 使用GetActiveView方法查找当前View
- 查找想要转换的View,如果没有则创建一个
- 使用SetActiveView方法设置当前活动视图
- 显示新视图,隐藏旧视图
- 调用RecalcLayout方法重新布局
void CMainFrame::SwitchView(int nView){ //获得旧视图(活动视图)指针 CView* pOldView = GetActiveView(); //获得新视图指针 CView* pNewView = (CView*)GetDlgItem(nView); if (pNewView == NULL) { if (nView == 1) { pNewView = new CDemoView1(); } else if (nView == 2) { pNewView = new CDemoView2(); } else { return; } CCreateContext context; context.m_pCurrentDoc = pOldView->GetDocument(); //创建新视图 pNewView->Create(NULL, NULL, WS_BORDER, CFrameWnd::rectDefault, this, nView, &context); pNewView->OnInitialUpdate(); } //设置新视图为活动视图 SetActiveView(pNewView); //显示新视图 pNewView->ShowWindow(SW_NORMAL); //隐藏旧视图 pOldView->ShowWindow(SW_HIDE); //设置旧视图ID if (pOldView->GetRuntimeClass() == RUNTIME_CLASS(CDemoView1)) { pOldView->SetDlgCtrlID(1); } else if (pOldView->GetRuntimeClass() == RUNTIME_CLASS(CDemoView2)) { pOldView->SetDlgCtrlID(2); } //设置新视图ID pNewView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); //重新布局 RecalcLayout(); }void CMainFrame::OnSwitchView1() { SwitchView(1);}void CMainFrame::OnUpdateSwitchView1(CCmdUI* pCmdUI) { if (GetActiveView()->IsKindOf(RUNTIME_CLASS(CDemoView1))) { pCmdUI->Enable(FALSE); } else { pCmdUI->Enable(TRUE); }}void CMainFrame::OnSwitchView2() { SwitchView(2);}void CMainFrame::OnUpdateSwitchView2(CCmdUI* pCmdUI) { if (GetActiveView()->IsKindOf(RUNTIME_CLASS(CDemoView2))) { pCmdUI->Enable(FALSE); } else { pCmdUI->Enable(TRUE); }}
5.17 如何在SDI中动态切分窗口
即CSplitterWnd的应用
5.18 如何在SDI中静态切分窗口
同上,所谓静态切分就是说初始化时就有切分功能.
这些东西实际上都已经很落后,不管WinForm还是WPF,DOCKING && MDI都做的比这个好,而且简单.只不过MDI在MFC中属于内置的而已,了解下就好
0 0
- Win32 框架文档视图(2)
- Win32 框架文档视图(1)
- Win32 框架文档视图(3)
- 文档视图框架简介
- 文档视图框架
- 理解文档/视图框架
- 理解文档/视图框架
- 文档视图框架简介
- 文档、视图和框架
- 获取文档视图框架指针
- MFC的 文档 视图 框架
- 框架窗口、文档和视图
- MFC 之文档/视图/框架
- MFC 框架文档视图关系
- 文档视图框架操作总结
- 深入浅出MFC文档/视图架构之框架(2)
- 理解MFC文档/视图框架 by 雷神
- 深入浅出MFC文档/视图架构之框架
- 现在还无法确定这个方法是否正确
- Do what you love: Why you are not your job
- JDBC注册驱动程序三种方式
- 谁会这般去爱你
- 第十三题 从上往下遍历二叉树
- Win32 框架文档视图(2)
- 如何修改和查看tomcat内存大小
- ghost 小记
- Win32 框架文档视图(3)
- ACM Sdut 2158 Hello World!(数学题,排序) (山东省ACM第一届省赛C题)
- VS2010 CString 转 const char *
- ubuntu12.04.4中在mysql控制台下通过命令设置编码
- The ideal length for everything on the Internet
- struts2实现CRUD(增 删 改 查)