栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++画板程序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++画板程序

#include 
#include 
using namespace std;
using namespace graph;

char *gyd = "GYD's Drawing Board";
int i=1,Func=1,width=2,tx=0,ty=0;
unsigned long color=BLACK;
bool isFill=0,isSolid=1;
double s=1,cx,cy;
int g_imgID=-1;

class Command
{
public:
    int Func;
    Command *next;
    Command *last;
};
class OrderList
{
public:
    Command *head;
    Command *tail;
    OrderList():head(0),tail(0){}
    ~OrderList()
    {
        tail=0;
        while(head!=0)
        {
            Command *t=head;
            head=head->next;
            delete t;
        }
    }
    void backInsert()
    {
        Command *t=new Command();
        if(head==0&&tail==0)
        {
            head=t;
            tail=t;
            tail->next=0;
            tail->last=0;
            tail->Func=Func;
        }
        else
        {
            tail->next=t;
            t->last=tail;
            tail=t;
            tail->next=0;
            tail->Func=Func;
        }
    }
    void tailDelete()
    {
        if(tail!=0)
        {
            if(tail->last==0)
            {
                delete tail;
                tail=0;
                head=0;
            }
            else
            {
                Command *t;
                t=tail;
                tail=tail->last;
                tail->next=0;
                delete t;
            }
        }
    }
};


class CShape                 //包含图形的基本信息,但不包括坐标信息
{
public:
    unsigned long color=BLACK;  //图形颜色
    int width=2;                //图形线宽
    bool isFill=0;                //图形是否填充
    bool isSolid=1;                //图形边界虚实
    CShape(){}
    ~CShape(){}
};

class CurveData :public CShape
{
public:
    double x,y; int i;
    CurveData(){}
    ~CurveData(){}
};
class LineData :public CShape
{
public:
    double x0,y0,x1,y1;
    LineData(){}
    ~LineData(){}
};
class RectangleData :public CShape
{
public:
    double x0,y0,x1,y1;
    RectangleData(){}
    ~RectangleData(){}
};
class TriangleData :public CShape
{
public:
    double x0,y0,x1,y1,x2,y2;
    TriangleData(){}
    ~TriangleData(){}
};
class CircleData :public CShape
{
public:
    double x0,y0,x1,y1;
    CircleData(){}
    ~CircleData(){}
};
class ELlipseData :public CShape
{
public:
    double x0,y0,x1,y1;
    ELlipseData(){}
    ~ELlipseData(){}
};

class CurveNode
{
public:
    CurveData data;
    CurveNode *next; CurveNode *last;
    CurveNode(){}
    ~CurveNode(){}
};
class LineNode
{
public:
    LineData data;
    LineNode *next; LineNode *last;
    LineNode(){}
    ~LineNode(){}
};
class RectangleNode
{
public:
    RectangleData data;
    RectangleNode *next; RectangleNode *last;
    RectangleNode(){}
    ~RectangleNode(){}
};
class TriangleNode
{
public:
    TriangleData data;
    TriangleNode *next; TriangleNode *last;
    TriangleNode(){}
    ~TriangleNode(){}
};
class CircleNode
{
public:
    CircleData data;
    CircleNode *next; CircleNode *last;
    CircleNode(){}
    ~CircleNode(){}
};
class EllipseNode
{
public:
    ELlipseData data;
    EllipseNode *next; EllipseNode *last;
    EllipseNode(){}
    ~EllipseNode(){}
};

class CurveList
{
public:
    CurveNode *head; CurveNode *tail;
    CurveList():head(0),tail(0){}
    ~CurveList()
    {
        tail=0;
        while(head!=0)
        {
            CurveNode *t=head;
            head=head->next;
            delete t;
        }
    }
    void backInsert()
    {
        CurveNode *t=new CurveNode();
        if(head==0&&tail==0)
        {
            head=t;
            tail=t;
            tail->next=0;
            tail->last=0;
        }
        else
        {
            tail->next=t;
            t->last=tail;
            tail=t;
            tail->next=0;
        }
    }
    void tailDelete()
    {
        if(tail!=0)
        {
            if(tail->last==0)
            {
                delete tail;
                tail=0;
                head=0;
            }
            else
            {
                CurveNode *t;
                t=tail;
                tail=tail->last;
                tail->next=0;
                delete t;
            }
        }
    }
};
class LineList
{
public:
    LineNode *head; LineNode *tail;
    LineList():head(0),tail(0){}
    ~LineList()
    {
        tail=0;
        while(head!=0)
        {
            LineNode *t=head;
            head=head->next;
            delete t;
        }
    }
    void backInsert()
    {
        LineNode *t=new LineNode();
        if(head==0&&tail==0)
        {
            head=t;
            tail=t;
            tail->next=0;
            tail->last=0;
        }
        else
        {
            tail->next=t;
            t->last=tail;
            tail=t;
            tail->next=0;
        }
    }
    void tailDelete()
    {
        if(tail!=0)
        {
            if(tail->last==0)
            {
                delete tail;
                tail=0;
                head=0;
            }
            else
            {
                LineNode *t;
                t=tail;
                tail=tail->last;
                tail->next=0;
                delete t;
            }
        }
    }
};
class RectangleList
{
public:
    RectangleNode *head; RectangleNode *tail;
    RectangleList():head(0),tail(0){}
    ~RectangleList()
    {
        tail=0;
        while(head!=0)
        {
            RectangleNode *t=head;
            head=head->next;
            delete t;
        }
    }
    void backInsert()
    {
        RectangleNode *t=new RectangleNode();
        if(head==0&&tail==0)
        {
            head=t;
            tail=t;
            tail->next=0;
            tail->last=0;
        }
        else
        {
            tail->next=t;
            t->last=tail;
            tail=t;
            tail->next=0;
        }
    }
    void tailDelete()
    {
        if(tail!=0)
        {
            if(tail->last==0)
            {
                delete tail;
                tail=0;
                head=0;
            }
            else
            {
                RectangleNode *t;
                t=tail;
                tail=tail->last;
                tail->next=0;
                delete t;
            }
        }
    }
};
class TriangleList
{
public:
    TriangleNode *head; TriangleNode *tail;
    TriangleList():head(0),tail(0){}
    ~TriangleList()
    {
        tail=0;
        while(head!=0)
        {
            TriangleNode *t=head;
            head=head->next;
            delete t;
        }
    }
    void backInsert()
    {
        TriangleNode *t=new TriangleNode();
        if(head==0&&tail==0)
        {
            head=t;
            tail=t;
            tail->next=0;
            tail->last=0;
        }
        else
        {
            tail->next=t;
            t->last=tail;
            tail=t;
            tail->next=0;
        }
    }
    void tailDelete()
    {
        if(tail!=0)
        {
            if(tail->last==0)
            {
                delete tail;
                tail=0;
                head=0;
            }
            else
            {
                TriangleNode *t;
                t=tail;
                tail=tail->last;
                tail->next=0;
                delete t;
            }
        }
    }
};
class CircleList
{
public:
    CircleNode *head; CircleNode *tail;
    CircleList():head(0),tail(0){}
    ~CircleList()
    {
        tail=0;
        while(head!=0)
        {
            CircleNode *t=head;
            head=head->next;
            delete t;
        }
    }
    void backInsert()
    {
        CircleNode *t=new CircleNode();
        if(head==0&&tail==0)
        {
            head=t;
            tail=t;
            tail->next=0;
            tail->last=0;
        }
        else
        {
            tail->next=t;
            t->last=tail;
            tail=t;
            tail->next=0;
        }
    }
    void tailDelete()
    {
        if(tail!=0)
        {
            if(tail->last==0)
            {
                delete tail;
                tail=0;
                head=0;
            }
            else
            {
                CircleNode *t;
                t=tail;
                tail=tail->last;
                tail->next=0;
                delete t;
            }
        }
    }
};
class EllipseList
{
public:
    EllipseNode *head; EllipseNode *tail;
    EllipseList():head(0),tail(0){}
    ~EllipseList()
    {
        tail=0;
        while(head!=0)
        {
            EllipseNode *t=head;
            head=head->next;
            delete t;
        }
    }
    void backInsert()
    {
        EllipseNode *t=new EllipseNode();
        if(head==0&&tail==0)
        {
            head=t;
            tail=t;
            tail->next=0;
            tail->last=0;
        }
        else
        {
            tail->next=t;
            t->last=tail;
            tail=t;
            tail->next=0;
        }
    }
    void tailDelete()
    {
        if(tail!=0)
        {
            if(tail->last==0)
            {
                delete tail;
                tail=0;
                head=0;
            }
            else
            {
                EllipseNode *t;
                t=tail;
                tail=tail->last;
                tail->next=0;
                delete t;
            }
        }
    }
};

//储存图形,画图顺序的链表
CurveList cu; LineList l; RectangleList r; TriangleList t; CircleList ci; EllipseList e;
OrderList o;

void display()
{
    int winx=getWinWidth(),winy=getWinHeight();
    setColor(GREY);
    fillRectangle(0,0,51,winy); fillRectangle(winx-51,0,winx,winy);
    setColor(BLACK);
    setLineWidth(3); setSolidLines();
    for(int i=1;i<9;i++)    rectangle(0,winy-50*i,0+50,winy-50*i+50);
    for(int i=10;i<14;i++)  rectangle(0,winy-50*i,0+50,winy-50*i+50);
    for(int i=1;i<9;i++)    rectangle(winx-50,winy-50*i,winx,winy-50*i+50);
    rectangle(20,winy-10,30,winy-35); fillTriangle(19,winy-35,31,winy-35,25,winy-44);
    line(10,winy-90,40,winy-60);
    rectangle(10,winy-140,40,winy-110);
    triangle(10,winy-190,25,winy-160,40,winy-190);
    circle(25,winy-225,15);
    ellipse(25,winy-275,15,10);
    arrowLine(40,winy-475,10,winy-475,8.0,10.0);
    putText(5,winy-526,"Save");
    putText(3,winy-576,"Clear");
    putText(4,winy-626,"Open");

    setColor(BLACK);    fillRectangle(winx-40,winy-40,winx-10,winy-10);
    setColor(RED);      fillRectangle(winx-40,winy-90,winx-10,winy-60);
    setColor(GREEN);    fillRectangle(winx-40,winy-140,winx-10,winy-110);
    setColor(BLUE);     fillRectangle(winx-40,winy-190,winx-10,winy-160);
    setColor(PURPLE);   fillRectangle(winx-40,winy-240,winx-10,winy-210);
    setColor(YELLOW);   fillRectangle(winx-40,winy-290,winx-10,winy-260);
    setColor(ORANGE);   fillRectangle(winx-40,winy-340,winx-10,winy-310);
    setColor(BROWN);    fillRectangle(winx-40,winy-390,winx-10,winy-360);

    setColor(BLACK);
    setDottedLines();
    if(Func)    rectangle(3,winy-50*Func+3,47,winy-50*Func+50-3);
    switch(color)
    {
        case BLACK: rectangle(winx-47,winy-50+3,winx-3,winy-3); break;
        case RED: rectangle(winx-47,winy-100+3,winx-3,winy-50-3); break;
        case GREEN: rectangle(winx-47,winy-150+3,winx-3,winy-100-3); break;
        case BLUE: rectangle(winx-47,winy-200+3,winx-3,winy-150-3); break;
        case PURPLE: rectangle(winx-47,winy-250+3,winx-3,winy-200-3); break;
        case YELLOW: rectangle(winx-47,winy-300+3,winx-3,winy-250-3); break;
        case ORANGE: rectangle(winx-47,winy-350+3,winx-3,winy-300-3); break;
        case BROWN: rectangle(winx-47,winy-400+3,winx-3,winy-350-3); break;
    }

    setSolidLines();
    if(isFill==0){rectangle(10,winy-365,40,winy-385);}
    else{fillRectangle(10,winy-365,40,winy-385);}
    if(isSolid==1){setSolidLines();}
    else{setDottedLines();}
    line(10,winy-325,40,winy-325); line(10,winy-315,40,winy-315); line(10,winy-335,40,winy-335);

    //绘图
    Command *h=o.head;CurveNode *h1=cu.head;LineNode *h2=l.head;RectangleNode *h3=r.head;
    TriangleNode *h4=t.head;CircleNode *h5=ci.head;EllipseNode *h6=e.head;
    while(h)
    {
        if(h1!=0&&h->Func==1)
        {
            setColor(h1->data.color);
            setLineWidth(h1->data.width);
            setSolidLines();
            while(h1->data.i==2&&h1->next!=0)
            {
                line((h1->data.x+tx)*s,(h1->data.y+ty)*s,(h1->next->data.x+tx)*s,(h1->next->data.y+ty)*s);
                h1=h1->next;
            }
            if(h1!=0) h1=h1->next;
        }
        else if(h2!=0&&h->Func==2)
        {
            setColor(h2->data.color);
            setLineWidth(h2->data.width);
            if(h2->data.isSolid==0){setDottedLines();}
            else                {setSolidLines(); }
            line((h2->data.x0+tx)*s,(h2->data.y0+ty)*s,(h2->data.x1+tx)*s,(h2->data.y1+ty)*s);
            h2=h2->next;
        }
        else if(h3!=0&&h->Func==3)
        {
            setColor(h3->data.color);
            setLineWidth(h3->data.width);
            if(h3->data.isSolid==0){setDottedLines();}
            else                {setSolidLines(); }
            if(h3->data.isFill==0)
                rectangle((h3->data.x0+tx)*s,(h3->data.y0+ty)*s,(h3->data.x1+tx)*s,(h3->data.y1+ty)*s);
            else
                fillRectangle((h3->data.x0+tx)*s,(h3->data.y0+ty)*s,(h3->data.x1+tx)*s,(h3->data.y1+ty)*s);
            h3=h3->next;
        }

        else if(h4!=0&&h->Func==4)
        {
            setColor(h4->data.color);
            setLineWidth(h4->data.width);
            if(h4->data.isSolid==0){setDottedLines();}
            else                {setSolidLines(); }
            if(h4->data.isFill==0)
                triangle((h4->data.x0+tx)*s,(h4->data.y0+ty)*s,(h4->data.x1+tx)*s,(h4->data.y1+ty)*s,(h4->data.x2+tx)*s,(h4->data.y2+ty)*s);
            else
                fillTriangle((h4->data.x0+tx)*s,(h4->data.y0+ty)*s,(h4->data.x1+tx)*s,(h4->data.y1+ty)*s,(h4->data.x2+tx)*s,(h4->data.y2+ty)*s);
            h4=h4->next;
        }

        else if(h5!=0&&h->Func==5)
        {
            double cirx,ciry;
            double circler;
            cirx=(h5->data.x0+h5->data.x1)/2;
            ciry=(h5->data.y0+h5->data.y1)/2;
            circler=sqrt(((h5->data.x0-h5->data.x1)*(h5->data.x0-h5->data.x1)+(h5->data.y0-h5->data.y1)*(h5->data.y0-h5->data.y1))/4);
            setColor(h5->data.color);
            setLineWidth(h5->data.width);
            if(h5->data.isSolid==0){setDottedLines();}
            else                {setSolidLines(); }
            if(h5->data.isFill==0) circle((cirx+tx)*s,(ciry+ty)*s,circler*s);
            else fillCircle((cirx+tx)*s,(ciry+ty)*s,circler*s);
            h5=h5->next;
        }

        else if(h6!=0&&h->Func==6)
        {
            double cirx,ciry,cirxx,ciryy;
            cirx=(h6->data.x0+h6->data.x1)/2;
            ciry=h6->data.y0;
            cirxx=(h6->data.x0-h6->data.x1)/2;
            ciryy=h6->data.y0-h6->data.y1;
            setColor(h6->data.color);
            setLineWidth(h6->data.width);
            if(h6->data.isSolid==0){setDottedLines();}
            else                {setSolidLines(); }
            if(h6->data.isFill==0) ellipse((cirx+tx)*s,(ciry+ty)*s,cirxx*s,ciryy*s);
            else fillEllipse((cirx+tx)*s,(ciry+ty)*s,cirxx*s,ciryy*s);
            h6=h6->next;
        }
        h=h->next;
    }
}
void mouseMove(int x,int y)
{
    cx=x/s-tx;
    cy=y/s-ty;
    int winx=getWinWidth();
    if(x>51&&x
        if(Func==1)
        {
            if(i==2)
            {
                cu.backInsert();
                cu.tail->data.color=color;
                cu.tail->data.width=width;
                cu.tail->data.x=cx;
                cu.tail->data.y=cy;
                cu.tail->data.i=2;
            }
        }
        else if(Func==2)
        {
            if(i==2)
            {
                l.tail->data.x1=cx;
                l.tail->data.y1=cy;
            }
        }
        else if(Func==3)
        {
            if(i==2)
            {
                r.tail->data.x1=cx;
                r.tail->data.y1=cy;
            }
        }
        else if(Func==4)
        {
            if(i==2&&isFill==0)
            {
                t.tail->data.x1=cx;
                t.tail->data.x2=cx;
                t.tail->data.y1=cy;
                t.tail->data.y2=cy;
            }
            else if(i==2&&isFill==1)
            {
                t.tail->data.x1=cx+1;
                t.tail->data.x2=cx;
                t.tail->data.y1=cy+1;
                t.tail->data.y2=cy;
            }
            else if(i==3)
            {
                t.tail->data.x2=cx;
                t.tail->data.y2=cy;
            }
        }
        else if(Func==5)
        {
            if(i==2)
            {
                ci.tail->data.x1=cx;
                ci.tail->data.y1=cy;
            }
        }
        else if(Func==6)
        {
            if(i==2)
            {
                e.tail->data.x1=cx;
                e.tail->data.y1=cy;
            }
        }
    }
}

void mousePress(int message,int x,int y)
{
    int winx=getWinWidth(),winy=getWinHeight();
    cx=x/s-tx;
    cy=y/s-ty;
    for(int i=1;i<9;i++)
        if(message==LEFT_BUTTON_DOWN&&x<50&&y>winy-50*i&&ywinx-50&&y>winy-50)  color=BLACK;
    else if(message==LEFT_BUTTON_DOWN&&x>winx-50&&y>winy-100&&ywinx-50&&y>winy-150&&ywinx-50&&y>winy-200&&ywinx-50&&y>winy-250&&ywinx-50&&y>winy-300&&ywinx-50&&y>winy-350&&ywinx-50&&y>winy-400&&ywiny-400)
    {
        if(isFill==0) isFill=1;
        else        isFill=0;
    }//填充
    if(message==LEFT_BUTTON_DOWN&&x<50&&ywiny-350)
    {
        if(isSolid==0) isSolid=1;
        else        isSolid=0;
    }//实线

    if(Func==1)
    {
        if(message==LEFT_BUTTON_DOWN&&x>55&&x
            o.backInsert();
            cu.backInsert();
            cu.tail->data.color=color;
            cu.tail->data.width=width;
            cu.tail->data.x=cx;
            cu.tail->data.y=cy;
            cu.tail->data.i=2;
            i=2;
        }
        else if(message==LEFT_BUTTON_DOWN&&x>55&&x
            cu.backInsert();
            cu.tail->data.color=color;
            cu.tail->data.width=width;
            cu.tail->data.x=cx;
            cu.tail->data.y=cy;
            cu.tail->data.i=1;
            i=1;
        }
    }
    else if(Func==2)
    {
        if(message==LEFT_BUTTON_DOWN&&x>55&&x
            o.backInsert();
            l.backInsert();
            l.tail->data.color=color;
            l.tail->data.isFill=isFill;
            l.tail->data.isSolid=isSolid;
            l.tail->data.width=width;
            l.tail->data.x0=cx;
            l.tail->data.y0=cy;
            l.tail->data.x1=cx;
            l.tail->data.y1=cy;
            i=2;
        }
        else if(message==LEFT_BUTTON_DOWN&&x>55&&x
            l.tail->data.x1=cx;
            l.tail->data.y1=cy;
            i=1;
        }
    }
    else if(Func==3)
    {
        if(message==LEFT_BUTTON_DOWN&&x>55&&x
            o.backInsert();
            r.backInsert();
            r.tail->data.color=color;
            r.tail->data.isFill=isFill;
            r.tail->data.isSolid=isSolid;
            r.tail->data.width=width;
            r.tail->data.x0=cx;
            r.tail->data.y0=cy;
            r.tail->data.x1=cx;
            r.tail->data.y1=cy;
            i=2;
        }
        else if(message==LEFT_BUTTON_DOWN&&x>55&&x
            r.tail->data.x1=cx;
            r.tail->data.y1=cy;
            i=1;
        }
    }
    else if(Func==4)
    {
        if(message==LEFT_BUTTON_DOWN&&x>55&&x
            o.backInsert();
            t.backInsert();
            t.tail->data.color=color;
            t.tail->data.isFill=isFill;
            t.tail->data.isSolid=isSolid;
            t.tail->data.width=width;
            t.tail->data.x0=cx;
            t.tail->data.y0=cy;
            t.tail->data.x1=cx;
            t.tail->data.y1=cy;
            t.tail->data.x2=cx;
            t.tail->data.y2=cy;
            i=2;
        }
        else if(message==LEFT_BUTTON_DOWN&&x>55&&x
            t.tail->data.x1=cx;
            t.tail->data.y1=cy;
            t.tail->data.x2=cx;
            t.tail->data.y2=cy;
            i=3;
        }
        else if(message==LEFT_BUTTON_DOWN&&x>55&&x
            t.tail->data.x2=cx;
            t.tail->data.y2=cy;
            i=1;
        }
    }
    else if(Func==5)
    {
        if(message==LEFT_BUTTON_DOWN&&x>55&&x
            o.backInsert();
            ci.backInsert();
            ci.tail->data.color=color;
            ci.tail->data.isFill=isFill;
            ci.tail->data.isSolid=isSolid;
            ci.tail->data.width=width;
            ci.tail->data.x0=cx;
            ci.tail->data.y0=cy;
            ci.tail->data.x1=cx;
            ci.tail->data.y1=cy;
            i=2;
        }
        else if(message==LEFT_BUTTON_DOWN&&x>55&&x
            ci.tail->data.x1=cx;
            ci.tail->data.y1=cy;
            i=1;
        }
    }
    else if(Func==6)
    {
        if(message==LEFT_BUTTON_DOWN&&x>55&&x
            o.backInsert();
            e.backInsert();
            e.tail->data.color=color;
            e.tail->data.isFill=isFill;
            e.tail->data.isSolid=isSolid;
            e.tail->data.width=width;
            e.tail->data.x0=cx;
            e.tail->data.y0=cy;
            e.tail->data.x1=cx;
            e.tail->data.y1=cy;
            i=2;
        }
        else if(message==LEFT_BUTTON_DOWN&&x>55&&x
            e.tail->data.x1=cx;
            e.tail->data.y1=cy;
            i=1;
        }
    }

    //<-
    if(message==LEFT_BUTTON_DOWN&&x<50&&ywiny-500)
    {
        o.tailDelete();
        if(Func==1)
            while(cu.tail->last!=0&&cu.tail->last->data.i==2)
                cu.tailDelete();
        else if(Func==2)    l.tailDelete();
        else if(Func==3)    r.tailDelete();
        else if(Func==4)    t.tailDelete();
        else if(Func==5)    ci.tailDelete();
        else if(Func==6)    e.tailDelete();
    }

    //Open
    if(LEFT_BUTTON_DOWN&&x<50&&ywiny-650)
    {
        system("outres.bmp");
    }
    //Save
    if(LEFT_BUTTON_DOWN&&x<50&&ywiny-550)
    {
         char name[]="painting.bmp";
         saveScreenImage(name);
    }
    //Clear
    if(LEFT_BUTTON_DOWN&&x<50&&ywiny-600)
    {
        while(cu.tail!=0)   cu.tailDelete();
        while(l.tail!=0)    l.tailDelete();
        while(r.tail!=0)    r.tailDelete();
        while(t.tail!=0)    t.tailDelete();
        while(ci.tail!=0)   ci.tailDelete();
        while(e.tail!=0)    e.tailDelete();
        while(o.tail!=0)    o.tailDelete();
    }
}
void keyboard(unsigned char key)
{
    if(key=='w'||key=='W')  ty=ty+10;
    else if(key=='s'||key=='S') ty=ty-10;
    else if(key=='a'||key=='A') tx=tx-10;
    else if(key=='d'||key=='D') tx=tx+10;
}
void specialKeyboard(int key)
{
    if(key==KEY_UP) s+=0.1;
    else if(key==KEY_DOWN)  s-=0.1;
}

int main()
{
    setWinTitle(gyd);
    initGraph(display,keyboard,mousePress,mouseMove,specialKeyboard);
    return 0;
}

项目地址:https://gitee.com/alveus/CPP_Drawing_Board

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960909.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号