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 ...
随机推荐
- WinHex V18.7(16进制编辑器) 多国语言绿色版
软件名称: WinHex V18.7(16进制编辑器)软件语言: 简体中文授权方式: 免费试用运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 1.7MB图片预览: ...
- hadoop namespace
As underscore(_) is not allowed. It may be the problem if your other configuration are ok. Your conf ...
- spring AOP 代理机制、执行过程、四种实现方式及示例详解
1.加载过程 spring首先检测配置文件中的代理配置,然后去加载bean; 如果配置文件中没有配置代理,自然代理不会生效,如果配置了代理,但是代理还没有生效,那么有可能是加载顺序的问题,即在检测到代 ...
- PHP7编译错误:php编译undefined reference to `libiconv 错误
ext/gd/libgd/.libs/gdkanji.o: In function `do_convert’: /root/php-5.2.12/ext/gd/libgd/gdkanji.c:350: ...
- [笔记]Practical Lessons from Predicting Clicks on Ads at Facebook
ABSTRACT 这篇paper中作者结合GBDT和LR,取得了很好的效果,比单个模型的效果高出3%.随后作者研究了对整体预测系统产生影响的几个因素,发现Feature+Model的贡献程度最大,而其 ...
- Kmeans聚类算法
K-means也是聚类算法中最简单的一种了,但是里面包含的思想却是不一般.最早我使用并实现这个算法是在学习韩爷爷那本数据挖掘的书中,那本书比较注重应用.看了Andrew Ng的这个讲义后才有些明白K- ...
- 用VBS控制鼠标的实现代码(获取鼠标坐标、鼠标移动、鼠标单击、鼠标双击)
网上搜到的答案普遍是VBS无法实现,或者是要用第三方COM(ActiveX?)组件.我对第三方组件是很反感的,使用第三方组件毫无可移植性可言,因为别人的系统中不一定注册了这个组件.我的建议是,尽量不要 ...
- ERROR 1406 : Data too long for column 解决办法
解决办法: 在my.ini里找到 sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION” 把其中的STRIC ...
- url操作一网打尽(一)
1:url实际应用简介 近期研究发现通过url传递参数很普遍的(淘宝也是这样做的), 通过修改url来传递参数,比如通过关键字搜索某件商品的时候,链接便追加了相应参数.在请求接口的时候直接对url进行 ...
- [转]关于Socket粘包问题
这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题,发现自己不是很清楚,所以查资料了解记录一下: 一两个简单概念长连接与短连接:1.长连接 Client方与Server方先建立通 ...