CDockablepane风格设置
屏蔽掉pane右上角的几个按钮
即将CDockablePane右上角的三个按钮屏蔽。
1 去掉关闭按钮
在CDockablePane的派生类中,重写方法CanBeClosed即可:
virtual BOOL CanBeClosed() const { return FALSE; }
禁止拖动Pane,禁止浮动
在CDockablePane的派生类中,重写以下任一方法即可:
virtual BOOL FloatPane(CRect rectFloat, AFX_DOCK_METHOD dockMethod = DM_UNKNOWN, bool bShow = true) { return FALSE; } virtual BOOL CanFloat() const { return FALSE; }
重写CanFloat后可能会发现重新运行时,窗口不会像原先吸附在原来的位置,而是默认移动到了最下端,显然这不是想要的。
如果不要浮动风格,那怎么办呢?之所以会浮动是因为可以点击标题栏和下方的边框,那我们去掉标题栏风格就是了。但是传统的去掉WS_CAPTION风格是没有用的(如果你做到了,请告诉我),所以只能在Create的时候将第4个参数bHasGripper设置为FALSE,标题栏就不会出现了。
当然啦,网上还有说重写GetCaptionHeight,virtual int
GetCaptionHeight() const { return 0;} 就可以了,但这种旁门左道是不持久的,双击窗口的下边框,窗口又浮了出来,那怎么办呢?还是有办法。直接找到父类CBasePane里边去,发现有一个
virtual
BOOL FloatPane(CRect rectFloat, AFX_DOCK_METHOD dockMethod = DM_UNKNOWN, bool
bShow = true)
{ return FALSE; }
没错!把它重写在继承窗口类里边,运行。发现双击下边的边框,它再也俏皮不起来了。
去掉自动掩藏按钮
在CMainFrame::OnCreate()中将下面的一句代码注释掉即可:
- //EnableAutoHidePanes(CBRS_ALIGN_ANY);
在CDockablePane的派生类中,重写CanAutoHide方法即可
virtual BOOL CanAutoHide() const { return FALSE; }
去掉下拉箭头按钮
在CMainFrame::OnCreate()中将下面的一句代码添加上即可:
GetDockingManager()->EnableDockSiteMenu(FALSE);
CTabbedPane
中关闭按钮的去除
CTabbedPane其实也是一个CDockablePane,查看CDockablePane及基类的源码得知,CTabbedPane右上角的关闭按钮与AFX_CBRS_CLOSE风格对应, 将AFX_CBRS_CLOSE风格去掉即可。继续查看代码,有GetControlBarStyle和SetControlBarStyle函数,所以想法可行,如下所示:
CDockablePane* pTabbedBar = NULL;
m_wndClassView.AttachToTabWnd(&m_wndFileView, DM_SHOW, TRUE, &pTabbedBar);
DWORD dwStyle = pTabbedBar->GetControlBarStyle();
pTabbedBar->SetControlBarStyle( dwStyle & ~AFX_CBRS_CLOSE); // 去除AFX_CBRS_CLOSE风格
m_wndProperties.EnableDocking(CBRS_ALIGN_ANY)
CDockablePane的创建函数如下:
virtual BOOL Create(LPCTSTR lpszCaption, CWnd* pParentWnd, const RECT& rect, BOOL bHasGripper, UINT nID, DWORD dwStyle, DWORD dwTabbedStyle = AFX_CBRS_REGULAR_TABS, DWORD dwControlBarStyle = AFX_DEFAULT_DOCKING_PANE_STYLE, CCreateContext* pContext = NULL)
而其中的DWORD dwControlBarStyle就有很大作用,dwControlBarStyle默认值为AFX_DEFAULT_DOCKING_PANE_STYLE,即
static const DWORD AFX_DEFAULT_DOCKING_PANE_STYLE = AFX_CBRS_FLOAT | AFX_CBRS_CLOSE | AFX_CBRS_RESIZE | AFX_CBRS_AUTOHIDE;
你可以修改这个值,你想要哪个功能就用哪个。禁止移动就不要AFX_CBRS_FLOAT ,改变大小就不要AFX_CBRS_RESIZE
如,只带关闭的CDockablePane:
m_ControllerInput.Create(strName, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_CONTROLLERINPUT, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI, AFX_CBRS_REGULAR_TABS, AFX_CBRS_CLOSE);
CDockablepane风格设置的更多相关文章
- 谈谈CListCtrl 扩展风格设置方法-SetExtendedStyle和ModifyStyleEx 比較
谈谈CListCtrl 扩展风格设置方法 --------------------------------------SetExtendedStyle和ModifyStyleEx 比較 对于刚開始学习 ...
- android studio eclipse keymap theme 快捷键 主题风格设置
android studio eclipse keymap theme 快捷键 主题风格设置 将Android Studio的快捷键设置与eclipse一致,使用习惯的快捷键才顺手.Mac系统下:进入 ...
- 可视化库-seaborn-布局风格设置(第五天)
1. sns.set_style() 进行风格设置, sns.set() 进行设置的重置, 五种风格 # 1.darkgrid# 2.whitegrid# 3.dark# 4.white# 5 tic ...
- 5-1可视化库Seabon-整体布局风格设置
In [1]: import seaborn as sns import numpy as np import matplotlib as mpl import matplotlib.pyplot a ...
- Intellij IDEA 13.1.3 字体,颜色,风格设置
作者QQ:1095737364 打开file-->settings,然后根据提示完成设置,当然,可以根据自己的爱好设置自己的风格,那个工程区的背景我还没有找到在什么地方,如果你找到了麻烦告诉我一 ...
- Android 圆形ProgressBar风格设置
Android系统自带的ProgressBar风格不是很好,如果想自己设置风格的话,一般有几种方法.首先介绍一下第一种方法通过动画实现.在res的anim下创建动画资源loading.xml: < ...
- 黄聪:Xmind修改默认字体风格设置
Xmind是一款非常好用的思维导图软件,但默认字体使用宋体不够好看,软件本身不支持设置默认字体,但通过修改配置文件达到配置默认字体的目的 默认控制风格的配置文件位置 XMind\plugins\org ...
- Eclipse代码风格设置
在编写代码的过程中,代码的呈现形式是通过eclipse的Formatter配置文件所控制的.我们可以按照自己的习惯生成属于自己的代码风格配置文件,方便规范以后的代码编写形式.具体的操作步骤如下所示:( ...
- PHPStorm IntelliJ IDEA 代码缩进风格设置
关于缩进风格,我还是觉得4空格比tab好 File -> Settings -> Editor -> Code Style: 如图,把Detect and use exsiting ...
随机推荐
- 单尺度二维离散小波分解dwt2
clc,clear all,close all; load woman; [cA,cH,cV,cD]=dwt2(X,'haar');%单尺度二维离散小波分解.分解小波函数haar figure,ims ...
- MVC5 Entity Framework学习之创建复杂的数据模型
目录(?)[-] 使用属性来自定义数据模型 DataType属性 StringLength属性 Column 属性 完成对Student实体的更改 Required 属性 Display 属性 Ful ...
- android 动态string
android开发过程之中,动态的插入string内容时候使用, 例如, <string name="time">当前时间:<xliff:g id="p ...
- 用 rebar 来构建、编译、测试、发布 Erlang 应用程序
转自:http://dhq.me/build-compile-eunit-release-erlang-application-with-rebar rebar 是一个遵循 Erlang/OTP 原则 ...
- 屏幕录像专家2014 v0318 免费版
软件名称: 屏幕录像专家2014软件语言: 简体中文授权方式: 免费试用运行环境: Win8 / Win7 / Vista / WinXP软件大小: 7.9MB图片预览: 软件简介:屏幕录像专家201 ...
- javascript: 常用操作
1,取得输入框的输入值,修改输入框的输入值 根据id获取id的值 jquery代码: $('#version_number').val(); 解释:$是jQuery的标准用法,('#version_n ...
- Entity Framework 6.x Code First 基础
安装扩展工具 "Entity Framework Power Tools Beta4" 可选, 主要用于数据库变结构反向生成C#的对象和对应的mapping类.如果你熟悉mappi ...
- Struts2如何传值到jsp页面
Struts2如何传值到jsp页面 不是action传值到jsp页面,而是jsp页面获取action中的属性值,或者范围(如request,session,application等)里的值.所以,有两 ...
- Cake
Cake Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- Centos7下安装numpy+matplotlib+scipy
摘自:http://litchiware.github.io/centos/2015/07/05/centos7%E4%B8%8B%E5%AE%89%E8%A3%85numpy+matplotlib+ ...