void CGraphicView::OnDot()
{
// TODO: 在此添加命令处理程序代码
m_nDrawType = 1;
}
void CGraphicView::OnLine()
{
// TODO: 在此添加命令处理程序代码
m_nDrawType = 2;
}
void CGraphicView::OnRectangle()
{
// TODO: 在此添加命令处理程序代码
m_nDrawType = 3;
}
void CGraphicView::OnEllipse()
{
// TODO: 在此添加命令处理程序代码
m_nDrawType = 4;
}
void CGraphicView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptOrigin = point;
CView::OnLButtonDown(nFlags, point);
}void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point)
{
CClientDC dc(this);
switch (m_nDrawType)
{
case 1:
dc.SetPixel(point, RGB(255, 0, 0));
break;
}
case 2:
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
break;
case 3:
dc.Rectangle(CRect(m_ptOrigin, point));
break;
case 4:
dc.Ellipse(CRect(m_ptOrigin, point));
break;
CView::OnLButtonUp(nFlags, point);
}编译完全没问题,可是我在MFC单文档程序生成的窗口中客户区左击鼠标没有反应,后来我又添加了这样一个响应事件,双击鼠标左键,弹出窗口“hello World!”
void CGraphicView::OnLButtonDblClk(UINT nFlags, CPoint point)

     MessageBox("hello world");
   }
双击鼠标后也没有反应,求教大神是什么原因 据我猜测是OnLButtonDown和OnLButtonUp没有执行

解决方案 »

  1.   

    你就贴这么段代码没什么意义,编译能通过说明代码没有问题。
    OnLButtonDown和OnLButtonUp没有执行,你消息映射是否存在问题。WM_LBUTTONDOWN和WM_LBUTTONUP消息的映射看一下有没有问题
      

  2.   

    没有消息映射?
    只是添加了2个函数?2个函数是怎么添加的?
    DECLARE_MESSAGE_MAP宏声明消息映射函数
    BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏实现消息映射
    消息响应函数的实现。
      

  3.   

    BEGIN_MESSAGE_MAP(CGraphicView, CView)
    ....................................................
            ....................................................
    ON_WM_LBUTTONDOWN()
    ON_WM_LBUTTONUP()

    END_MESSAGE_MAP()另外,你画图代码的位置不对,即使能够画出来,窗口移动之后也会被重绘刷新掉。应该在OnPaint()或者OnDraw()函数中实现绘制。
      

  4.   

    把你绘图的代码放到OnDraw函数中去做。
      

  5.   

    我想知道你的 onDot onLine  这四个函数是怎么走到的,没上下文啊