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