VC++ 创建基于MFC的SDI应用程序,Visual Studio风格的主界面如下图所示,在该主界面上的视图菜单下包含有队对各个可停靠窗格显示或隐藏的控制菜单项。而基于Ribbon风格的应用程序,所以视图菜单下面的其他菜单都不显示了,只剩下了一个控制状态条显示或隐藏的CheckBox。

问题:MFC程序使用了Ribbon风格的,所以其他菜单都不显示了。有一个系统自动生成的停靠窗格,被该窗格不小心关掉后,再调试也显示不出来了。肿么办啊?

解答:消除停靠位置,存储记忆功能:在CMainFrame中,CreateDocablePane之前,调用CMainFrame::EnableLoadDockState(FALSE);即可。

如果MFC程序不是Ribbon风格的,窗体界面一般如下图所示:

可以通过在View视图菜单里添加如下代码实现隐藏的窗格的再次显示:

CDockablePane::ShowPane();

docablepane 可停靠窗口在使用过程中的问题小结 vc mfc

问题一:可停靠窗口在左上角显示 没有停靠到指定位置

这几天在调Docablepane 可停靠窗口VC++ 2010,遇到这个如题问题。

目前接触到的原因:

1、DockPane(&m_yourPane);//未调用,或未执行

2、//并且注意在m_yourPane.Create( 中创建风格处指定 | WS_VISIBLE);

内部运行原理原因没分析出来,估计与Cpane的SetWindowPos 函数处调用有问题。感兴趣可调试Mfc源代码

问题二:消除停靠位置,存储记忆功能

在CMainFrame中,CreateDocablePane之前,调用CMainFrame::EnableLoadDockState(FALSE);

问题三:去掉停靠窗口右上角关闭按钮,

m_ourPane.SetControlBarStyle(~AFX_CBRS_CLOSE)

问题四:如何指定可停靠位置。

1、在创建时,风格参数中 CBRS_BOTTOM \CBRS_LEFT ... 等指定初始显示的位置

2、创建后可调用   m_pane.EnableDocking(CBRS_ALIGN_ANY/*任意位置*/); CBRS_ALIGN_LEFT,  BOTTOM 等 指定可停靠在Frame中的位置

注意,当指定dcoapane的控制条某些属性(SetControlBarStyle(AFX_CBRS_RESIZE))后,用户则无法拖动该可停靠窗口

问题五:如何禁止用户拖动可停靠窗口

m_pane.SetControlBarStyle(AFX_CBRS_RESIZE);

问题六:如何排版多个可停靠窗口

请参考:http://blog.csdn.net/kikaylee/article/details/8936953

如何创建多功能停靠窗口,以及如和销毁可停靠窗口,以及使用参见:http://www.codeproject.com/Articles/493218/Understanding-CDockablePane

个人觉得普通显示关闭,没必要像codeProject这位,每次都去创建销毁可停靠窗口来进行显示或隐藏,建议使用成员函数的方式,进行m_pane.ShowWindow(SW_HIDE /*SW_SHOW*/)及可。

VC++ MFC SDI/MDI Ribbon程序的停靠窗格被关闭后如何再次显示的更多相关文章

  1. 基于VC++ Win32+CUDA+OpenGL组合与VC++ MFC SDI+CUDA+OpenGL组合两种方案的遥感影像显示:获得的重要结论!

    1.基于VC++ Win32+CUDA+OpenGL组合的遥感影像显示 在该组合方案下,初始化时将OpenGL设置为下面两种方式,效果一样 //设置方式1 glutInitDisplayMode (G ...

  2. vc++MFC开发上位机程序

    用vc++MFC开发过不少跟单片机通讯的上位机程序了.搞懂了MFC架构,开发还是很快的,与底层单片机程序通讯,可以用串口.usb.网络.短信形式.串口现在用的越来越少了,一般电脑跟单片机在一块,使用串 ...

  3. linux后台运行程序(secureCRT断掉或关闭后继续运行程序)

    secureCRT断掉后想继续运行程序.也就是程序会在后台一直执行到结束. secureCRT通过ssh联接到client端运行程序,如果关掉窗口或者断开连接时,任务会被kill. 为了程序能够后台执 ...

  4. MFC中 SDI/MDI框架各部分指针获取方式

    VC MFC SDI/MDI框架各部分指针获取方式   整理总结一下,希望能帮助到别人.   获得CWinApp 获得CMainFrame 获得CChildFrame 获得CDocument 获得CV ...

  5. 魔改——MFC SDI程序 转换为 MDI程序

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  6. VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误

    1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...

  7. 重写MFC窗口上的关闭按钮事件(SDI, MDI, Dialog)

    This piece of code demonstrate how to override WM_CLOSE event. 点击窗口关闭按钮,触发相关事件! 有时候,在MFC程序退出之前,我们通常会 ...

  8. C# Windows - SDI和MDI应用程序

    生成MDI应用程序 MDI应用程序至少要由两个截然不同的窗口组成.第一个窗口叫做MDI容器(Container),可以在容器中显示的窗口叫做MDI子窗口. 要把应用程序的主窗口从一个窗体改为MDI容器 ...

  9. VC/MFC 编程技巧大总结

    1 toolbar默认位图左上角那个点的颜色是透明色,不喜欢的话可以自己改. 2 VC++中 WM_QUERYENDSESSION WM_ENDSESSION 为系统关机消息. 3 Java学习书推荐 ...

随机推荐

  1. JVM(四) G1 收集器工作原理介绍

    此篇文章半原创是对参考资料中的知识点进行总结,欢迎评论指点,谢谢!        部分知识点总结来自R大的帖子,下文有参考资料的链接 概述 G1 收集是相比于其他收集器(可见 上一篇文章),可以独立运 ...

  2. mybatis动态参数(使用PreparedStatement插入#)和静态参数($)

    1.使用#传递参数 #{}:被JDBC解析为PreparedStatement预编译语句,变量内容被当做一个整体变量,比如字符串,整形等. 2.使用$传递参数 ${}:纯粹是字符串替换,中间可以出现S ...

  3. 网站部署中遇到的问题-未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项

    问题描述: 运行站点抛出错误:未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项 原因: 应用程序池没有启用32位程序. 解决方法: 找到站点对应的应用程序池,设置启用32 ...

  4. 【Hadoop系列】linux下 root用户免密码登录远程主机 ssh

    SSH原理:[Hadoop系列]linux SSH原理解析 操作环境: CentOS 6.5 操作对象: 用户A主机和远程主机B 正文部分:斜体加粗代表linux指令. linux下 非root用户免 ...

  5. redis(7)LRU缓存

    一.LRU简介 LRU是Least Recently Used的缩写,即:最近最少使用. 它是内存管理中的一种页面置换算法,对于在内存中但是又不用的数据块,操作系统会根据哪些数据属于LRU而将其移除内 ...

  6. JBPM学习第2篇:为Eclipse添加JBPM开发支持

    1.Eclipse添加JBoss支持插件 参考:Eclipse添加JBoss支持 若已安装,直接跳过! 2.Eclipse添加Drools插件 jbpm-installer-full解压后的文件夹中找 ...

  7. Java 之常用运算符(3)

    什么是运算符: 运算符是一种“功能”符号,用以通知 Java 进行相关的运算.譬如,我们需要将变量 age 的值设置为 20 ,这时候就需要一个“=”,告诉程序需要进行赋值操作. Java 语言中常用 ...

  8. Android recyclerview删除item刷新列表

    删除item坑 mModels.remove(i); notifyItemRemoved(i); //必须调用这行代码 notifyItemRangeChanged(i, mModels.size() ...

  9. Android解析ActivityManagerService(二)ActivityTask和Activity栈管理

    前言 关于AMS,原计划是只写一篇文章来介绍,但是AMS功能繁多,一篇文章的篇幅远远不够.这一篇我们接着来学习与AMS相关的ActivityTask和Activity栈管理. 1.ActivitySt ...

  10. 函数arguments对象

    一.arguments对象 arguments 是一个对应于传递给函数的参数的类数组对象. 二.语法 arguments 三.描述 arguments对象是所有(非箭头)函数中都可用的局部变量.你可以 ...