请教:关于无边框对话框拉伸的问题
时间:2011-11-28
来源:互联网
我加入了OnNcHitTest、OnNcLButtonDown、OnSetCursor。三个消息,而且也可以正常的拖动改变对话框大小,但是问题是只有左上角拖动不了,其他地方都可以,这是为什么呀??
BOOL CDlg1::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
....
else if(nHitTest == HTTOPLEFT || nHitTest == HTBOTTOMRIGHT)
{
SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENWSE)));
return TRUE;
}
....
}
LRESULT CDlg1::OnNcHitTest(CPoint point)
{
CRect rect;
GetWindowRect(&rect);
........
else if(point.x <= rect.left+25 && point.y <= rect.top+25)
{
return HTTOPLEFT; /// 这里返回HTTOPLEFT 就不能拖动窗体,而且点击该区域的时候,不能响应OnNcLButtonDown。
//return HTBOTTOM; /// 返回HTBOTTOM或者其他的都可以拖动
}
.........
}
void CDlg1::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
else if(nHitTest == HTTOPLEFT)
{
SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPLEFT, MAKELPARAM(point.x, point.y));
}
}
鼠标放到左上角区域的时候 鼠标的样子变成了拉伸的样子,但是单击左键就是不能响应NcLButtonDown消息 其他的都可以
请问下各位高手,这是哪里出现的问题呢??什么原因能造成这样的样子??麻烦各位了
BOOL CDlg1::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
....
else if(nHitTest == HTTOPLEFT || nHitTest == HTBOTTOMRIGHT)
{
SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENWSE)));
return TRUE;
}
....
}
LRESULT CDlg1::OnNcHitTest(CPoint point)
{
CRect rect;
GetWindowRect(&rect);
........
else if(point.x <= rect.left+25 && point.y <= rect.top+25)
{
return HTTOPLEFT; /// 这里返回HTTOPLEFT 就不能拖动窗体,而且点击该区域的时候,不能响应OnNcLButtonDown。
//return HTBOTTOM; /// 返回HTBOTTOM或者其他的都可以拖动
}
.........
}
void CDlg1::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
else if(nHitTest == HTTOPLEFT)
{
SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPLEFT, MAKELPARAM(point.x, point.y));
}
}
鼠标放到左上角区域的时候 鼠标的样子变成了拉伸的样子,但是单击左键就是不能响应NcLButtonDown消息 其他的都可以
请问下各位高手,这是哪里出现的问题呢??什么原因能造成这样的样子??麻烦各位了
作者: desehawk 发布时间: 2011-11-28
各位高手帮帮忙...
作者: desehawk 发布时间: 2011-11-28
楼主首先确认一下鼠标位于左上角时究竟有没有响应过,比如说鼠标指针变换,如果有的话那就好好调试代码,如果根本没有响应(指针无变化),那就另当别论了
作者: cjqpker 发布时间: 2011-11-28
作者: VisualEleven 发布时间: 2011-11-28
感谢回复,我可以拉伸窗口,只有左上角的拉伸不好用,其他方向的都可以拉伸。鼠标移动到左上角拉伸区域的时候,鼠标会变成拉动状态,但是调试的时候发现:
else if(point.x <= rect.left+25 && point.y <= rect.top+25)
{
return HTTOPLEFT; /// 如果这里返回的是 HTTOPLEFT 就不能拖动对话框了
//return HTBOTTOM; /// 如果返回HTBOTTOM或者其他的都可以拖动
}
而且在鼠标移动到这个区域的时候,单击左键,OnNcLButtonDown消息响应不了。如果我在左上角区域里返回的是HTTOP或者其他的,OnNcLButtonDown却可以响应。
else if(point.x <= rect.left+25 && point.y <= rect.top+25)
{
return HTTOPLEFT; /// 如果这里返回的是 HTTOPLEFT 就不能拖动对话框了
//return HTBOTTOM; /// 如果返回HTBOTTOM或者其他的都可以拖动
}
而且在鼠标移动到这个区域的时候,单击左键,OnNcLButtonDown消息响应不了。如果我在左上角区域里返回的是HTTOP或者其他的,OnNcLButtonDown却可以响应。
作者: desehawk 发布时间: 2011-11-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28