急!!!!!请教拆分窗口后,固定拆分窗口大小使不能拉动

dgsrest 2003-03-24 09:45:02
小弟用CSplitterWnd拆分窗口成两个窗口,但我想用户不能够任意拉动拆分后窗口的大小,请指点一下,谢谢!
...全文
133 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoogleGeek 2003-03-25
  • 打赏
  • 举报
回复
zhdleo(叮东) 分析得很对!。。。
GoogleGeek 2003-03-25
  • 打赏
  • 举报
回复
override :WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_SETCURSOR

void CLockableSplitter::OnLButtonDown(UINT nFlags, CPoint point)
{

CWnd::OnLButtonDown(nFlags, point);


}

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

CWnd::OnMouseMove(nFlags, point);

}

BOOL CLockableSplitter::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{

return CWnd::OnSetCursor(pWnd, nHitTest, message);

}
zhdleo 2003-03-25
  • 打赏
  • 举报
回复
也就是kingzai(studying C#) 所说方法,我来仔细说说:

这样做:

首先,不能使用原有的CSplitterWnd来定义m_wndSplitter对象,

而是要从CSplitterWnd类派生一个自己的切分类——CMySplitterWnd

然后用这个CMySplitterWnd类在MainFrm.h中定义m_wndSplitter对象。

接着,添加自己派生类的这样两个消息函数
void CMySplitterWnd::OnLButtonDown(UINT nFlags, CPoint point)
{
//CSplitterWnd::OnLButtonDown(nFlags, point);//把原有的这行注释掉
//也就是说让这个函数什么也不做。
}

void CMySplitterWnd::OnMouseMove(UINT nFlags, CPoint point)
{
//CSplitterWnd::OnMouseMove(nFlags, point);//注释掉
}

这样方可实现固定位置。

原来直接用CSplitterWnd来定义m_wndSplitter对象,就无法从载
上面两个消息函数,并让其正确相应(这是原因所在)。

试试吧。
liugy 2003-03-25
  • 打赏
  • 举报
回复
对,你在继承一个类,其中有个参数设置为m_bTrack = false;(设为True,是可以拖动的。)
你再查一查m_bTrack
kingzai 2003-03-24
  • 打赏
  • 举报
回复
derive your CXSplitterWnd Class from CSplitterWnd Class ,and overide OnLButtonDown and OnLButtonMouseMove function.
CXSplitterWnd::OnLButtonDown(...)
{
...
}
CXSplitterWnd::OnMouseMove(...)
{
..
}
dgsrest 2003-03-24
  • 打赏
  • 举报
回复
我想用户不能够任意拉动拆分条,具体怎作呢?请指点
Ariesman 2003-03-24
  • 打赏
  • 举报
回复
在WM_SIZE消息中加入
SetWindowPos(0,0,0,0,SWP_NOMOVE||SWP_NOSIZE);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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