MFC中, 如何实现拖动窗口的一个地方(不是标题栏), 然后把窗口拖走?

我在窗口的鼠标按下消息中加入了m_point=point;SetTimer(100,1,NULL);然后在鼠标松开中加入了m_point=point;KillTimer(... 我在窗口的鼠标按下消息中加入了

m_point = point;
SetTimer(100, 1, NULL);
然后在鼠标松开中加入了
m_point = point;
KillTimer(100);
CDialog::OnLButtonUp(nFlags, point);

最后在定时器响应消息里加入了:
if (nIDEvent == 100)
{
CPoint point;
GetCursorPos(&point);
CRect rect, rect2;
GetDesktopWindow()->GetWindowRect(&rect);
GetWindowRect(&rect2);
if (rect2.right >= rect.Width()-10)
MessageBox("DDDD");
SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(m_point.x, m_point.y));
Sleep(100);
SendMessage(WM_NCLBUTTONUP, HTCAPTION, MAKELPARAM(point.x, point.y));
m_point = point;
}

只能够在鼠标松开的时候移动窗口, 我要的是时刻跟随鼠标.
展开
 我来答
jellycgl
2015-04-05 · TA获得超过417个赞
知道小有建树答主
回答量:1149
采纳率:66%
帮助的人:891万
展开全部
在PreTranslateMsg函数中,将鼠标左键移动或者点击消息,模拟成点击在标题栏上就可以了
追问
怎么具体实现?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
归悦欣cf
2015-04-05 · TA获得超过1444个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1325万
展开全部
直接在网上搜你的提问,有很多资料甚至源码。
追问
废话啊.

网上的只能是在鼠标松开的地方移动窗口, 和我的代码一样.

我要的是能够每鼠标移动的时候, 窗口就移动.
追答
看来你没有仔细看网上资料,在非标题栏处使用鼠标左键点击移动窗口,可以在OnNcHitTest消息函数里面进行处理,只要在此函数里面判断鼠标点击点在你指定的范围内,则只需让OnNcHitTest消息函数返回 HTCAPTION,以下下是一个例子:
LRESULT CQPlayerDlg::OnNcHitTest(CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CPoint pt;
pt = point;
ScreenToClient(&pt);
CRect screenRect;
GetDlgItem(IDC_SCREEN)->GetWindowRect(&screenRect);
if (pt.y < 35)
{
return HTCAPTION;
}

return CDialogEx::OnNcHitTest(point);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式