MFC分割窗口防止用户改变窗格的大小

2 篇文章 0 订阅
2 篇文章 0 订阅

有时可能不希望用户调整分割窗口的布局,换句话说,就是不希望改变窗格的大小,那么就可以截取CWnd的消息WM_NCHITTEST来实现这一功能。Windows使用这个消息询问窗口,光标是否处于某个特定的位置。在分割窗口中,当光标位于分割条上时,CWnd的默认窗口过程就会做出特定的反应,进而可以改变光标的形状等。但是通过巧妙的设定WM_NCHITTEST消息响应函数的返回值,则可以达到欺骗Windows的目的,这样就可以锁定分割条,因而也就不能再调整窗格的大小。

WM_NCHITTEST消息响应函数OnNcHitTest的事项如下:

UINT CsplitterWndEx::OnNcHitTest(CPoint point)

{

    //在此处添加消息处理代码或者调用默认实现

    return HTNOWHERE;

}

可以看出,它屏蔽了对其基类成员CSplitterWnd::OnNcHitTest的调用,而直接返回HTNOWHERE值。这意味着,Windows将会一直认为并没有像“光标位于分割条之上”的事件发生,因而光标的形状不会变化,用户也不能改变窗格的大小。

当然,还可以通过WM_MOUSEMOVE、WM_LBUTTONDOWN等消息,并在响应函数中屏蔽对基类同名函数的调用,而直接对CWnd类的同名函数进行调用,同样可以达到类似的效果。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值