MFC程序中,如何真正的实现在当前屏幕上通过鼠标点击和移动一段距离后鼠标释放两个动作画一条线?
我消息处理的程序是这样写的。//CmultiView消息处理程序voidCmultiView::OnLButtonDown(UINTnFlags,CPointpoint)...
我消息处理的程序是这样写的。
// CmultiView 消息处理程序
void CmultiView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_prpoint=m_endpoint=point;
flags=false;
CView::OnLButtonDown(nFlags, point);
}
void CmultiView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(flags)
{
CWindowDC pDC(GetDesktopWindow());
pDC.MoveTo(m_prpoint);
pDC.LineTo(m_endpoint);
m_endpoint=point;
pDC.MoveTo(m_prpoint);
pDC.LineTo(m_endpoint);
// ReleaseDC(pDC);
}
CView::OnMouseMove(nFlags, point);
}
void CmultiView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// CDC* pDC=GetDC();
CWindowDC pDC(GetDesktopWindow());
pDC.MoveTo(m_prpoint);
pDC.LineTo(m_endpoint);
m_endpoint=point;
pDC.MoveTo(m_prpoint);
pDC.LineTo(m_endpoint);
//ReleaseDC(pDC);
ReleaseCapture();
flags=false;
CView::OnLButtonUp(nFlags, point);
}
CWindowDC dc(GetDesktopWindow());不是获取屏幕窗口吗?但是画直线的时候我只能在窗口中获取鼠标焦点,但是线是在窗口之外。可是我还是没有办法在桌面上画图(一点当前电脑屏幕,程序就失去焦点了,根本画不了图),怎么才能真正的在屏幕上上画图呢?就是说我在当前电脑屏幕上的任意一点按下左键,然后在屏幕上上的另一点释放左键,然后就在这两点之间画一条直线,而不是在窗口里面点击和释放。
能在屏幕上鼠标移动画直线,画圆,椭圆,矩形等图形应该就是异曲同工,但是我现在完成不了真正的屏幕移动画线,我刚自学MFC,在CSDN上搜索这个问题,我都没有得到我想要的答案,希望你能给我点指导。谢谢 展开
// CmultiView 消息处理程序
void CmultiView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_prpoint=m_endpoint=point;
flags=false;
CView::OnLButtonDown(nFlags, point);
}
void CmultiView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(flags)
{
CWindowDC pDC(GetDesktopWindow());
pDC.MoveTo(m_prpoint);
pDC.LineTo(m_endpoint);
m_endpoint=point;
pDC.MoveTo(m_prpoint);
pDC.LineTo(m_endpoint);
// ReleaseDC(pDC);
}
CView::OnMouseMove(nFlags, point);
}
void CmultiView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// CDC* pDC=GetDC();
CWindowDC pDC(GetDesktopWindow());
pDC.MoveTo(m_prpoint);
pDC.LineTo(m_endpoint);
m_endpoint=point;
pDC.MoveTo(m_prpoint);
pDC.LineTo(m_endpoint);
//ReleaseDC(pDC);
ReleaseCapture();
flags=false;
CView::OnLButtonUp(nFlags, point);
}
CWindowDC dc(GetDesktopWindow());不是获取屏幕窗口吗?但是画直线的时候我只能在窗口中获取鼠标焦点,但是线是在窗口之外。可是我还是没有办法在桌面上画图(一点当前电脑屏幕,程序就失去焦点了,根本画不了图),怎么才能真正的在屏幕上上画图呢?就是说我在当前电脑屏幕上的任意一点按下左键,然后在屏幕上上的另一点释放左键,然后就在这两点之间画一条直线,而不是在窗口里面点击和释放。
能在屏幕上鼠标移动画直线,画圆,椭圆,矩形等图形应该就是异曲同工,但是我现在完成不了真正的屏幕移动画线,我刚自学MFC,在CSDN上搜索这个问题,我都没有得到我想要的答案,希望你能给我点指导。谢谢 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询