комбинация между оконным приложением и консольным приложением - PullRequest
0 голосов
/ 24 апреля 2020

В графическом назначении нас попросили использовать комбинацию между оконным приложением и консольным приложением.
Чтобы получить ввод из консоли, чтобы решить, какую фигуру нужно нарисовать.
я создал класс для каждой фигуры и провел юнит-тест для них и они работают.
тогда, когда я использую их в основной функции, некоторые фигуры исчезают, они существуют, но скрыты.
есть мой код:


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, есть подсказки? ? ?? ?

...