标题:一个画无限条直线的MFC程序
只看楼主
一鑫
Rank: 2
等 级:论坛游民
帖 子:111
专家分:12
注 册:2018-4-12
结帖率:92.86%
 问题点数:0 回复次数:2 
一个画无限条直线的MFC程序
我要画无限条直线,代码如下,我检查过,代码应该是没什么问题的,就是显示不出来,为什么,我是用vs2017写的,求前辈指导
Cobject.h
class graph:public CObject
{
public:
    int x0, x1, y0, y1;
    graph() { x0 = x1 = y0 = y1 = 0; }
    virtual void Cair(){}
    virtual void Draw(CDC*pDC){}
};
class Line :public graph
{
public:
    Line() { x0 = x1 = y0 = y1 = 0; }
    virtual ~Line(){}
    void Draw(CDC*pDC)
    {
        pDC->MoveTo(x0, y0);
        pDC->MoveTo(x1, y1);
    }
};

CCMZTEXT3View.h部分核心代码
#include"Cobject.h"
class CCMZTEXT3View : public CView
{
protected: // 仅从序列化创建
    CCMZTEXT3View() noexcept;
    DECLARE_DYNCREATE(CCMZTEXT3View)

// 特性
public:
    CCMZTEXT3Doc* GetDocument() const;
    int DrawWhat;
    CTypedPtrArray<CObArray, graph*>m_graph;
    graph *g;
    bool IsDown;
CCMZTEXT3View.cpp部分核心代码
CCMZTEXT3View::CCMZTEXT3View() noexcept
{
    IsDown = false;
    DrawWhat = 1;
    // TODO: 在此处添加构造代码

}
void CCMZTEXT3View::OnDraw(CDC* pDC)
{
    CCMZTEXT3Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;
    int i = m_graph.GetSize(), j;
    for (j = 0; j < i; j++)
    {
        graph*pObject = m_graph[j];
        pObject->Draw(pDC);
    }
    if (IsDown)
    {
        g->Draw(pDC);
    }
void CCMZTEXT3View::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    IsDown = true;
    if (DrawWhat == 1)
    {
        g = new Line();
        g->x0 = point.x;
        g->y0 = point.y;
    }
    CView::OnLButtonDown(nFlags, point);
}
void CCMZTEXT3View::OnLButtonUp(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    IsDown = false;
    m_graph.Add(g);
    CView::OnLButtonUp(nFlags, point);
}
void CCMZTEXT3View::OnMouseMove(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    if (IsDown)
    {
        g->x1 = point.x;
        g->y1 >= point.y;
        Invalidate();
    }
    CView::OnMouseMove(nFlags, point);
}
void CCMZTEXT3View::OnLine()
{
    DrawWhat = 1;
    // TODO: 在此添加命令处理程序代码
}
我已经在菜单栏中添加的画直线的ID了,ID是ID_line;
搜索更多相关主题的帖子: 代码 graph public void point 
2018-10-12 23:48
一鑫
Rank: 2
等 级:论坛游民
帖 子:111
专家分:12
注 册:2018-4-12
得分:0 
我发现了问题所在了
void Draw(CDC*pDC)
    {
        pDC->MoveTo(x0, y0);
        pDC->MoveTo(x1, y1);
    }
应该是
void Draw(CDC*pDC)
    {
        pDC->MoveTo(x0, y0);
        pDC->LineTo(x1, y1);
    }
谢谢大家
2018-10-13 12:41
一鑫
Rank: 2
等 级:论坛游民
帖 子:111
专家分:12
注 册:2018-4-12
得分:0 
我发现了问题所在了
void Draw(CDC*pDC)
    {
        pDC->MoveTo(x0, y0);
        pDC->MoveTo(x1, y1);
    }
应该是
void Draw(CDC*pDC)
    {
        pDC->MoveTo(x0, y0);
        pDC->LineTo(x1, y1);
    }
谢谢大家
2018-10-13 12:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490337-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.131173 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved