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()中将下面的一句代码注释掉即可:

  1. //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);

时间: 2024-10-07 05:31:06

CDockablepane风格设置的相关文章

CListCtrl 扩展风格设置方法---SetExtendedStyle和ModifyStyleEx

想把ListCtr设置为整行高亮显示错误的方法为: 1 clistctrl.ModifyStyleEx(0,LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); 正确的方法为: 1 DWORD dwStyle = clistctrl.GetExtendedStyle(); 2 dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES; 3 clistctrl.SetExtendedStyle(dwStyle); 那么,Modi

谈谈CListCtrl 扩展风格设置方法-SetExtendedStyle和ModifyStyleEx 比較

谈谈CListCtrl 扩展风格设置方法 --------------------------------------SetExtendedStyle和ModifyStyleEx 比較 对于刚開始学习的人来说,当他须要设定listctrl的扩展风格时,经常想到用ModifyStyleEx 来设定,代码例如以下: ModifyStyleEx(0,LVS_EX_GRIDLINES) 这是不对的,正确的设定应该是: SetExtendedStyle(LVS_EX_GRIDLINES) 那么,Modif

可视化库-seaborn-布局风格设置(第五天)

1. sns.set_style() 进行风格设置, sns.set() 进行设置的重置, 五种风格 # 1.darkgrid# 2.whitegrid# 3.dark# 4.white# 5 ticks import seaborn as sns import numpy as np import matplotlib.pyplot as plt # 定义基本绘图函数 def sinplot(flip=1): x = np.linspace(0, 14, 100) for i in range

Qt界面风格设置

每个widget都可以设置风格 setStyle(QStyle style) 对QApplication设置QStyle即对所有 QApplication::setStyle(QStyleFactory::create("Fusion")); 其他widget如过没有被设置QStyle,默认使用QApplication的 QStyle主要可重写接口 绘制复杂控件 virtual void    drawComplexControl(ComplexControl control, con

Intellij IDEA 13.1.3 字体,颜色,风格设置

作者QQ:1095737364 打开file-->settings,然后根据提示完成设置,当然,可以根据自己的爱好设置自己的风格,那个工程区的背景我还没有找到在什么地方,如果你找到了麻烦告诉我一下,谢谢. 设置字体与颜色 设置风格 如有问题请加入QQ群:123300273

eclipse的编辑器样式风格设置

1.Help->Install New Software->Work with:Update Site - http://eclipse-color-theme.github.com/update->add->名字设置->OK->select all ->next-> 等待几分钟->next ->finesh 2.重启eclipse->Window->Preferences->General->Apperance->

qtableview 表格风格设置

1.窗体无边框? tableView->setFrameShape(QFrame::NoFrame); 2.表格内容无边框? tableView->setShowGrid(false); 3.设置标题头风格? tableView->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color: rgb(205,205,205)};"); 4.表格交替变色? tableView-&

vim编辑器风格设置

cd ~ ls -al 将发现有个.vimrc文件 将以下代码覆盖.vimrc的内容 map <F9> :call SaveInputData()<CR>func! SaveInputData() exec "tabnew" exec 'normal "+gP' exec "w! /tmp/input_data"endfunc "colorscheme torte"colorscheme murphy"

flutter 主页面底部导航栏实现以及主题风格设置

import 'package:flutter/material.dart'; import 'package:flutter_app/bottom_navigation_widget.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutt