各位:
小弟用 CSplitterWnd 切分出了 3 个视图,把窗体分成两列,左边是独立的一个视图,右边再横向分出了 2 个视图。现在的问题是,在运行的时候,用户可以拖动分割条来改变两边视图的大小,我希望是可以改变大小,但是有一个大小的限度,比如,当拖动分割条改变左边视图的宽度时,我希望最小不能小于 300 ,如果小于 300 就固定不能再拖动了。不知道如何写代码,希望大家给予指点,谢谢
小弟用 CSplitterWnd 切分出了 3 个视图,把窗体分成两列,左边是独立的一个视图,右边再横向分出了 2 个视图。现在的问题是,在运行的时候,用户可以拖动分割条来改变两边视图的大小,我希望是可以改变大小,但是有一个大小的限度,比如,当拖动分割条改变左边视图的宽度时,我希望最小不能小于 300 ,如果小于 300 就固定不能再拖动了。不知道如何写代码,希望大家给予指点,谢谢
问题是到底是怎么写?我希望限定的是 Frame 里面某个视图的大小
if (cx < 800) {
.......???
}
if (cx < 800)
{
cx = 800;
}
WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_SETCURSOR,如果不满足你的条件,就回避标准的CSplitterWnd的处理过程。
if (cx < 800)
{
cx = 800;
}这种方法是没有用的,我试过了if (cx < 800) {
MoveWindow(0, 0, 800, cy);
}
如果是写在 MainFrame 的 OnSize 里面会造成严重的闪烁,写在视图的 OnSize 里面也没有用至于说 CSplitterWnd::SetRowInfo /CSplitterWnd::SetColumnInfo,好像也不能写在 MainFrame 里面吧,因为我觉得 MainFrame 的 OnSize 方法传入的 cx 和 cy 参数应该不是针对我正在移动分割条的那个视图的 cx 和 cy 吧。如果是写在视图的 OnSize 里面,是否是通过
CMainFrame *pMain = (CMainFrame *)AfxGetApp() -> GetMainWnd();
pMain ->m_wndSplitter;
来得到 CSplitterWnd 对象呢?我一运行就出错