vc++中限制窗口大小的方法

vc++中限制窗口大小的方法,第1张

vc++中限制窗口大小的方法,第2张

一般来说,窗口大小的变化是由用户拖动窗口边框引起的。所以我们可以在其响应函数中截取主窗口消息WM_NCHITTEST来判断CWnd::OnNcHitTest()的返回值是否为四个值之一
htright,
htleft,
htbottom
。如果是,则表明用户此时已经单击了四个边框中的一个。这个时候,我们应该回到HTCLIENT。那么,鼠标的形状就不会变成水平或垂直的双向箭头,用户也不可能通过拖动边框来改变窗口大小。
使用类向导阅读以下内容后,未找到消息WM_NCHITTEST,因此我们必须手动添加消息映射。
在begin _ message _ map(cmin frame,cmdiframewnd)
下添加
on _ wm _ nchittest(),并在framework类的头文件下声明
afx _ msglresult onnchittest(CPCP)。
realize
lresult cmainframe::OnNcHitTest(cpoint point)
{
if(CWnd::OnNcHitTest(point)= = HT right | | CWnd::OnNcHitTest(point)= = HT left | | CWnd::OnNcHitTest(point)= = HT bottom)
return HT client;
return CWnd::OnNcHitTest(point);
}
在这种情况下,不能用鼠标改变大小。然而,只有四条边。虽然不能拖拽四个边,但是有四个角。所以如果加上
htleft
htright
htbottom left
htbottom right
,四边加四个角就不行了。呵呵
不过,还是少了一点。漏了什么
考试提示:当你双击窗口顶部,也就是字幕区,窗口会变小,没有办法回复。我该怎么办??
examda编辑推荐:在OnCreate函数中添加以下代码:
setwindowlong (m _ hwnd,GWL _ style,getwindowlong (m _ hwnd,GWL _ style)& ~ ws _ maximize box);
这个按钮也不能用,双击标题栏也不会融掉。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » vc++中限制窗口大小的方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情