非网页 我想利用 Active 的方法 来实现作图.首先捕获两个消息 鼠标DOWN和 UP 消息。void CActiveCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
m_OldPoint = point;
COleControl::OnLButtonDown(nFlags, point);
}void CActiveCtrl::OnLButtonUp(UINT nFlags, CPoint point)
{
m_NewPoint = point;
COleControl::OnLButtonUp(nFlags, point);
}然后添加一个方法void CActiveCtrl::MakeMap(SHORT LineStyle, SHORT LineType, SHORT lWith)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
m_nLineStyle = LineStyle; //画图风格
m_lWith = lWith; //宽度
m_LineType = LineType; //  画图类型
MakeMaping();
}然后作图函数。
void CActiveCtrl::MakeMaping()
{
CClientDC dc(this);
CPen m_Pen(m_nLineStyle,m_lWith,RGB(255,0,0));
dc.SelectObject(&m_Pen);
CBrush *m_Brush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
dc.SelectObject(m_Brush);
switch (m_LineType)
{
case 1:dc.Ellipse(CRect(m_OldPoint,m_NewPoint));
break;
case 2:dc.MoveTo(m_OldPoint);
dc.LineTo(m_NewPoint);
break;
case 3:dc.SetPixel(m_NewPoint,RGB(255,0,0));
break;
case 4:dc.Rectangle(CRect(m_OldPoint,m_NewPoint));
break;
}
}问题是为啥我测试没有效果呢?哪儿出错了啊因为我想通过方法来实现调用作图函数 所以 应该如何编写代码才是正确的啊?

解决方案 »

  1.   

    你在什么地方调用了MakeMap函数没?
      

  2.   

    MakeMap
    是方法啊。。在另一个IDE中 测试的时候 调用了的 
    Active1.MakeMap(0,1,1) 没有任何效果!
      

  3.   

    问题是有没有在你需要的时候调用MakeMap函数
    我想一般实在鼠标弹起时触发绘图吧? 但是你的代码中可能没有触发
      

  4.   

    我肯定调用了 这个函数赛。 改了下
    void CActiveCtrl::OnLButtonDown(UINT nFlags, CPoint point)//鼠标按下消息
    {
    m_OldPoint = point;
    COleControl::OnLButtonDown(nFlags, point);
    }void CActiveCtrl::OnLButtonUp(UINT nFlags, CPoint point)//鼠标放开消息
    {
    CClientDC dc(GetDesktopWindow());//桌面作图
    CPen m_Pen(PS_SOLID,m_lWith,RGB(255,0,0));
    dc.SelectObject(&m_Pen);
    CBrush *m_Brush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    dc.SelectObject(m_Brush);
    switch (m_LineType)
    {
    case 1:dc.Ellipse(CRect(m_OldPoint,point));
    break;
    case 2:dc.MoveTo(m_OldPoint);
    dc.LineTo(point);
    break;
    case 3:dc.SetPixel(point,RGB(255,0,0));
    break;
    case 4:dc.Rectangle(CRect(m_OldPoint,point));
    break;
    }
    COleControl::OnLButtonUp(nFlags, point);
    }void CActiveCtrl::MakeMap(int LineType,int lWith)
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    m_lWith = lWith;
    m_LineType = LineType;
    }
    还是没法作图,不明白怎么回事了!
      

  5.   

    你没有正确田间Activex控件的外部方法吧或者你是不是没有获取到鼠标的事件啊
      

  6.   

    但是我另一个方法就有效 HELOO WORLD 测试消息肯定对的 我在程序里面测试通过 !不过移植到 Active就没效果了
      

  7.   

    在OnLButtonUp打个断点,然后F5,看有没有执行就知道了