关于CDockablePane不能设置固定宽度的解决方案
2014-12-12 16:55
369 查看
问题描述:
工作中用到了CDockablePane类,用它实现一个停靠面板,期望该停靠面板具有停靠、自动隐藏功能,但是不希望它能够改变大小。查阅MSDN和网上资料,发现设置其最小尺寸容易,调用其SetMinSize成员方法可以设置,但是设置最大尺寸、或者让其不能调整尺寸同时保留停靠功能比较麻烦。
下面是我的解决方法:
(1)、从CDockablePane派生自己的类;
(2)、在OnPaint函数中进行如下处理:
GetDefaultPaneDivider()->ShowWindow( SW_HIDE);
该步骤中的得到的窗口为一个宽度为4像素、高度等于Pane的矩形窗口,实现改变大小要靠它,这是我在探究过程中发现的,也不知道该怎么称呼它。将它隐藏掉后就不能实现改变大小了。因为鼠标移动Pane的边缘不再锁定到此窗口。
新的问题:
隐藏掉该窗口后,会留下一个宽度为4像素,高度为Pane高度的矩形区域,在绘图时出现黑块, 原因很简单,隐藏掉窗口该区域没有重绘,解决方法是移动该矩形的位置。
分析得知:其实我期望的不是有没有这个矩形窗口,而是鼠标移动到该矩形窗口上没有响应。
所以:
最终的解决方案是:
将上述步骤(2)中的ShowWindow( SW_HIDE )改为 EnableWindow( FALSE );
这样做效果会更好一些,但是并非完美的解决方案,因为由于该矩形窗口的背景色与DockablePane的背景色以及控件存在差异,所以会在Pane的边框显示一条边框带。此问题目前还没有想到好的解决方法。
工作中用到了CDockablePane类,用它实现一个停靠面板,期望该停靠面板具有停靠、自动隐藏功能,但是不希望它能够改变大小。查阅MSDN和网上资料,发现设置其最小尺寸容易,调用其SetMinSize成员方法可以设置,但是设置最大尺寸、或者让其不能调整尺寸同时保留停靠功能比较麻烦。
下面是我的解决方法:
(1)、从CDockablePane派生自己的类;
(2)、在OnPaint函数中进行如下处理:
GetDefaultPaneDivider()->ShowWindow( SW_HIDE);
该步骤中的得到的窗口为一个宽度为4像素、高度等于Pane的矩形窗口,实现改变大小要靠它,这是我在探究过程中发现的,也不知道该怎么称呼它。将它隐藏掉后就不能实现改变大小了。因为鼠标移动Pane的边缘不再锁定到此窗口。
新的问题:
隐藏掉该窗口后,会留下一个宽度为4像素,高度为Pane高度的矩形区域,在绘图时出现黑块, 原因很简单,隐藏掉窗口该区域没有重绘,解决方法是移动该矩形的位置。
分析得知:其实我期望的不是有没有这个矩形窗口,而是鼠标移动到该矩形窗口上没有响应。
所以:
最终的解决方案是:
将上述步骤(2)中的ShowWindow( SW_HIDE )改为 EnableWindow( FALSE );
这样做效果会更好一些,但是并非完美的解决方案,因为由于该矩形窗口的背景色与DockablePane的背景色以及控件存在差异,所以会在Pane的边框显示一条边框带。此问题目前还没有想到好的解决方法。
相关文章推荐
- 关于span不能设置宽度及span自动换行的解决方法
- 关于table固定列宽度的解决方案
- 关于select下拉框最后一项鼠标经过不能变色及设置宽度后下拉框无法滚动的bug?
- 关于span不能设置宽度及span自动换行的解决方法
- 关于如何给<input type="date">设置默认当前日期的方法 和 给table固定宽度
- 关于span不能设置宽度及span自动换行的解决方法
- 关于table设置固定宽度高度自适应
- 关于使用SpringSecurity不能设置Session并发无效、剔除前一个用户无效的核心解决方案
- NO.24 关于左侧div固定宽度,右侧自适应时footer不能在最底部的问题
- 关于动态创建dsn时不能设置用户名和密码的解决方法
- 关于ArcSDE Oracle9i 不能正常建立服务的几个解决方案
- 关于VC单选按钮不能设置变量的问题以及Group属性的设置
- 关于js设置标签样式来显示图片背景无效的解决方案
- 10月20日 阴 星期二 心情一般 关于同一用户不能同时在两台电脑上登录问题的解决方案
- 关于酷我音乐盒2010贺岁版不能设置缓存所在的位置的问题
- 关于同一用户不能同时在两台电脑上登录问题的解决方案
- DIV+CSS 布局一行两列,左列固定宽度,右列自适应宽度;设置最小宽度
- 关于在设置启动文件夹或者设置用户选项时不能得到当前用户的解决方法
- 关于MMC不能打开数据库问题解决方案
- 关于winxp共享为来宾方式不能实现的设置难题解决了