CDockablePane窗口调整位置

CDockablePane窗口调整位置


CDockablePane窗口调整位置说起来也就一二句话,估计是没人关心这个问题,所以在百度和必应上始终都查不到处理的方式。花了半天时间搞明白了写个提示吧。

CDockablePane窗口有两种状态,一种是停靠状态,一种是悬浮状态。
先说停靠状态的窗口,如果是用DockPane函数显示的,那就不用说了,直接就是要么占满一横条,要么占满一竖条,要调整直接调用SetWindowPos调整就行。
另一种用DockToWindow函数显示出来的,两个窗口要么上下,要么左右并列显示的在这里插入图片描述这种一般默认都是5:5比例显示的,如果要改成8:2显示就在第一个窗口的OnSize处理中用SetWindowPos来调整大小,在OnCreate中调整是没用的。如果是把第一个由5变8就只在第一个窗口中处理,第二个会自动调整来适应第一个窗口的调整。如果是把第一个由5变2,嘿嘿我没测试,估计是调整第二个。
还有一种是悬浮状态的窗口,
在这里插入图片描述

实际上是用FloatPane显示的窗口,FloatPane函数有个参数可以设置悬浮窗口在屏幕上的位置,但这个只有在FloatPane调用第一次的时候有效,如果窗口位置或大小改变了,但悬浮的窗口还是在原位置不动。就算是重载了MainFrame的OnSIze和OnMove消息里调用SetWindowPos,Pane的位置不变。
卡了一二个小时,仔细观察发现SetWindowPos实际上是有效果的,调整的是DockPane里面的控件的位置,而不是Pane的位置。
有这个发现有试了试Pane.GetParent()->SetWindowPos(…),结果悬浮的Pane能调整位置了。
收工。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MFC(Microsoft Foundation Classes)是微软公司提供的一个用于开发Windows桌面应用程序的框架。CDockablePaneMFC的一个类,用于创建可停靠的面板。 CDockablePane类是CWnd类的派生类,它提供了创建和管理可停靠面板的功能。使用CDockablePane类,我们可以将面板放置在主窗口的工作区,并且可以通过拖放的方式改变面板的位置大小。CDockablePane类提供了一些常用的方法,用于设置面板的样式、标题和图标等。 要使用CDockablePane类,首先需要在MFC应用程序的主框架窗口添加一个CDockablePane成员变量。然后,通过调用CDockablePane类的Create方法,可以在主框架窗口创建一个可停靠的面板。可以通过调用CDockablePane类的各种方法,来设置面板的属性和样式。 在创建CDockablePane对象后,可以使用其AddPane方法向面板添加子窗口。可以使用CDockablePane类的各种方法,来管理面板的子窗口,如获取面板窗口的数量、显示或隐藏子窗口等。 CDockablePane类还提供了一些回调函数,可以通过重写这些函数,实现自定义的面板行为。例如,可以重写OnEraseWorkArea方法来绘制面板的背景,或者重写OnShowPopupMenu方法来自定义面板的右键菜单。 总之,CDockablePaneMFC的一个非常有用的类,可以用于创建可停靠的面板,方便用户在应用程序进行操作。使用CDockablePane,可以轻松实现面板的拖放、调整大小和隐藏显示等功能,提升了用户的交互体验。 ### 回答2: MFC(Microsoft Foundation Class)是微软公司开发的用于Windows操作系统的程序开发框架。CDockablePaneMFC的一个类,用于创建可停靠的窗格。 CDockablePane通过继承CWnd类实现,可以在应用程序的主窗口创建可停靠的子窗格。它可以被拖动、停靠和浮动,并且可以在主窗口的各个区域(如左侧、右侧、底部等)进行停靠。 要使用CDockablePane,首先需要在主窗口添加一个成员变量,该变量为CDockablePane类型。然后,在主窗口的OnCreate函数调用Create函数来创建CDockablePane对象。可以通过SetWindowText函数设置窗格的标题。 接下来,可以通过调用EnableDocking函数来启用CDockablePane的停靠功能。可以使用DockPane函数将CDockablePane对象停靠到主窗口的指定区域。 CDockablePane还提供了一些其他的功能,如在窗格添加控件、处理事件等。可以通过重写OnCreate、OnSize等函数来实现这些功能。 总之,CDockablePaneMFC一个用于创建可停靠窗格的类,通过调用相应的函数和重写相关的函数可以实现窗格的创建、停靠、浮动等功能。它为用户提供了一个灵活的界面布局方式,可以方便地进行界面设计。 ### 回答3: MFC(Microsoft Foundation Classes)是微软提供的一套用于Windows应用程序开发的C++类库。CDockablePaneMFC的一个类,用于实现可以停靠的窗格。 CDockablePane类继承自CBasePane,它可以被用户拖动或者停靠到不同的位置,如主窗口的顶端、左侧、右侧或者底部。CDockablePane类提供了一些方法和属性,用于控制窗格的行为和外观。 使用CDockablePane类创建一个停靠窗格的步骤如下: 1. 在MFC应用程序的主框架窗口,添加一个成员变量,类型为CDockablePane或者CDockablePane的派生类。 2. 在为主窗口类生成的OnInitDialog()函数里调用Create()方法,创建CDockablePane对象。 3. 设置窗格的显示位置大小以及其他外观属性,例如调用SetWindowText()方法设置窗格的标题,调用EnableAutoHide()方法启用自动隐藏等。 4. 在主框架窗口的OnCreate()方法调用DockControlBar()方法,将窗格添加到主窗口,并根据需要布置窗格的位置大小。 5. 在需要显示或隐藏窗格的时候,调用ShowPane()方法。 CDockablePane类还提供了一些事件处理方法,例如OnPaneContextMenu()用于处理窗格的右键菜单事件,OnPaneResized()用于处理窗格大小改变事件等。开发人员可以重写这些事件处理方法,以实现自定义的行为。 总之,CDockablePaneMFC用于创建可以停靠的窗格的类,通过使用CDockablePane类,开发人员可以方便地实现灵活的界面布局,并提供交互性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值