一个关于分隔栏的问题。

一个傻冒 2003-09-19 01:13:56
我用了CSplitter类为SDI 生成一个分隔栏, 我怎么才能让分隔栏固定下来?
谢谢各位。
...全文
58 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yintongshun 2003-10-09
  • 打赏
  • 举报
回复
VC自己生成的浏览模式多文档就是这样的
cafeeee 2003-10-09
  • 打赏
  • 举报
回复
nonocast(如果没有如果):
谢谢了,请到“http://expert.csdn.net/Expert/topic/2338/2338136.xml?temp=.7186243”取分。
nonocast 2003-10-07
  • 打赏
  • 举报
回复
你可以根据整个窗口的大小和第二个子窗口的大小来计算出第一个窗口的大小
在OnSize中计算就可以了
cafeeee 2003-10-06
  • 打赏
  • 举报
回复
谢谢,不过,我的问题是在主窗口改变大小的情况下,第二个子窗口的大小能够不变(当然,此时第一个子窗口肯定是要改变大小的)。
nonocast 2003-10-06
  • 打赏
  • 举报
回复
如果是三分的话
只需要将需要锁定的那个分隔栏变成CFixedSplitter类的实例就可以了
另一个不变CSplitterWnd

因为不是很明白你的意思
要是还不行的话,发信给我
o_nono@163.net

---------------------
May you succeed!
------------------
nonocast 2003-10-06
  • 打赏
  • 举报
回复
如果窗口是被你一分为二的话,当一个View的大小确定了,那么另一个View的大小也随即确定
那其实就是需要锁定分隔栏就可以了
cafeeee 2003-10-06
  • 打赏
  • 举报
回复
怎么确定两个分割窗口的大小?

我只能确定第一个窗口的大小,但是我恰好要确定第二个窗口的大小,而对第一个窗口的大小没有要求,该怎么作呢?

另开帖子给分!
nonocast 2003-09-25
  • 打赏
  • 举报
回复
嗯,对!
行了吗?
一个傻冒 2003-09-21
  • 打赏
  • 举报
回复
太感谢了。 重载的函数要手工回进去吧?
谢谢你。 我试试看。
nonocast 2003-09-20
  • 打赏
  • 举报
回复
Follow the step-by-step guide below to lock your splitter
Step 1

在WorkSpace中的YourPro Classes上右键,在弹出菜单中选择New Class创建一个新的CSplitterWnd的派生类,在Class type中选择generic class,并在base class(es)中填入CSplitterWnd,在Name中随便你填,如CFixedSplitter,他将完成锁定splitter的行为。相信你应该没问题的。

Step 2

在你添加的新类中重载WM_LMUTTONDOWN,WM_MOUSEMOVE和WM_SETCURSOR消息。

代码如下:
void CFixedSplitter::OnLButtonDown(UINT nFlags, CPoint point)
{

// Bypass standard CSplitterWnd processing
CWnd::OnLButtonDown(nFlags, point);
}

void CFixedSplitter::OnMouseMove(UINT nFlags, CPoint point)
{

// Bypass standard CSplitterWnd processing
CWnd::OnMouseMove(nFlags, point);
}

BOOL CFixedSplitter::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// Bypass standard CSplitterWnd processing
return CWnd::OnSetCursor(pWnd, nHitTest, message);
}

Step 3
然后在Frame中加入你的头文件,将原来的CSplitterWnd替换成CFixedSplitter即可

说明:
道理说明白了很简单,就是跳过了CSplitterWnd的OnMouseMove和ObNouseDown,换句话说CSplitterWnd将接受不到来自界面的消息,被我们截获后之间给了CWnd,其实是一种假象,i.e.锁定Splitter
我们的CFixedSplitter还回避了标准的WM_SSETCURSOR,以保证光标不改变成拖动的形状。

如有任何问题,请致信
o_nono@163.net
附带上帖子号

---------------------
May you succeed!
------------------

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧