窗口应用程序和控制台应用程序之间的组合

在图形分配中,我们被要求在窗口应用程序和 控制台应用程序。 要从控制台获取输入以决定必须绘制什么形状。 我为每种形状上了课,并为它们做了单元测试,并且它们起作用了。 然后当我在主要功能中使用它们时,某些形状消失了,它们存在但被隐藏了。 有我的代码:


void menu()
{
    cout<<"1- Line"<<endl;
    cout<<"2- Circle"<<endl;
    cout<<"3- Curve"<<endl;
    cout<<"4- New Frame"<<endl;
    cout<<"5- Exit"<<endl;
    cout<<"Your choice : "<<endl;
}

上面的代码是菜单功能 这是我的主要:

/*  This function is called by the Windows function DispatchMessage()  */
circle cir;
line lin;
curve cur;
bool flag=false;
int x,y;
int choice=4;
point c,r;
vector<point>points;
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT p;
    switch (message)                  /* handle the messages */
    {
    case WM_PAINT:
        BeginPaint(hwnd, &p);
        if(flag)
        {
            if (choice==4)
            {
                cir.frame(p.hdc,c,lin.length(c,r));
            }
            else if (choice==1)
            {
                lin.draw(p.hdc,points[0],points[1],c,r);
            }
            else if (choice==2)
            {
                cir.draw(p.hdc,points[0],c,r,lin.length(points[0],points[1]));
            }
            else if (choice==3)
            {
                cur.draw(p.hdc,points[0],points[1],points[2],points[3],c,r);
            }
            menu();
            cin>>choice;
            if (choice == 5)
            {
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;

            }
            points.clear();
            flag = false;
        }

        EndPaint(hwnd, &p);
        break;
    case WM_LBUTTONDOWN:
        if(!flag && choice!=3)
        {
            x = LOWORD(lParam);
            y = HIWORD(lParam);
            points.push_back(point(x,y));
            cout<<"point "<<points.size()<<endl;
            if (points.size()==2)
            {
                flag=true;

            }
            if(choice==4)
            {
                c=points[0];
                r=points[1];
            }
        }
        else if(!flag && choice==3)
        {
            x = LOWORD(lParam);
            y = HIWORD(lParam);

            points.push_back(point(x,y));
            cout<<"point "<<points.size()<<endl;
            if (points.size()==4)
                flag=true;
        }
        InvalidateRect(hwnd, NULL, false);
        break;
    case WM_DESTROY:
        PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
        break;
    default:                      /* for messages that we don't deal with */
        return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

错误是:在运行时,一些形状消失了但它们存在 我使用codeBlocks作为IDE,有什么提示吗? ? ?? ?

评论