您现在的位置: 天下网吧 >> 网吧天地 >> 天下码农 >> 微信小程序 >> 正文

在VC中限制窗口大小

2008-11-6CFAN整理佚名
   一般窗口大小的改变,都是用户拖动窗口边框而造成的。所以,我们可以截获主窗口消息WM_NCHITTEST在其响应函数中判断CWnd::OnNcHitTest()的返回值是否为:HTRIGHT, HTLEFT, HTTOP, HTBOTTOM 。四个值之一,如果是,说明用户此时已点击了四个边框之一,此时我们应该返回HTCLIENT.那么,鼠标的形状就不会变成水平或垂直的双向箭头,用户就不可能依靠拖动边框来改变窗口大小了。

  用class wizard看了以下,没有找到WM_NCHITTEST这个消息,只能手动添加消息映射了 。

  在BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)下添上

  ON_WM_NCHITTEST()

  在框架类的头文件下

  声明

  afx_msg LRESULT OnNcHitTest(CPoint point);

  实现

  LRESULT CMainFrame::OnNcHitTest(CPoint point)

  {

  if(CWnd::OnNcHitTest(point) == HTRIGHT || CWnd::OnNcHitTest(point) == HTLEFT || CWnd::OnNcHitTest(point) == HTTOP || CWnd::OnNcHitTest(point) == HTBOTTOM)

  return HTCLIENT;

  return CWnd::OnNcHitTest(point);

  }

  这样的话就不能用鼠标改变大小了,但是,只是限制了四条边,虽然不能拖拉四条边了,但是四个角。因此,再加上

  HTTOPLEFT

  HTTOPRIGHT

  HTBOTTOMLEFT

  HTBOTTOMRIGHT

  这样4边+4角都不行了。

  不过,还缺一点点 ,缺什么

  双击窗口最上方也就是caption区域时窗口会变小,而且没办法回复

  怎么办?

  有办法,在OnCreate函数中加入如下代码:

    SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE)&~WS_MAXIMIZEBOX);

    这样最大化按钮也不能用了,而且双击标题栏也不会最大化了。

欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛 https://bbs.txwb.com

关注天下网吧微信/下载天下网吧APP/天下网吧小程序,一起来超精彩

本文来源:CFAN整理 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系邮箱:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧 网吧天下