Problem mit Array rectSchlitten aufbau (anfänger)
-
// VisuView.cpp : Implementierung der Klasse CVisuView // #include "stdafx.h" #include "Visu.h" #include "VisuDoc.h" #include "VisuView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CVisuView IMPLEMENT_DYNCREATE(CVisuView, CView) BEGIN_MESSAGE_MAP(CVisuView, CView) //{{AFX_MSG_MAP(CVisuView) ON_WM_TIMER() ON_WM_CREATE() ON_WM_LBUTTONDOWN() ON_WM_RBUTTONDOWN() ON_WM_MOVE() ON_WM_ERASEBKGND() //}}AFX_MSG_MAP // Standard-Druckbefehle ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CVisuView Konstruktion/Destruktion CVisuView::CVisuView() { m_XRect=0; // ZU ERLEDIGEN: Hier Code zur Konstruktion einfügen, } CVisuView::~CVisuView() { } BOOL CVisuView::PreCreateWindow(CREATESTRUCT& cs) { // ZU ERLEDIGEN: Ändern Sie hier die Fensterklasse oder das Erscheinungsbild, indem Sie // CREATESTRUCT cs modifizieren. return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CVisuView Zeichnen void CVisuView::OnDraw(CDC* pDC) { int Wert; int cx,cy; CDC memdc, *pmeDC; GetClientRect(&rectclient); cx=rectclient.right; cy=rectclient.bottom; memdc.CreateCompatibleDC(pDC); CBitmap Bitmappe, *poldBitmap; Bitmappe.CreateCompatibleBitmap(pDC,cx,cy); poldBitmap=memdc.SelectObject(&Bitmappe); CPen GruenStift, *pOldPen; GruenStift.CreatePen(PS_SOLID,2,RGB(0,0,0)); CBrush GruenBrush, *pOldBrush; GruenBrush.CreateSolidBrush(RGB(250,215,0)); CBrush RotBrush, *pNewBrush; RotBrush.CreateSolidBrush(RGB(119,136,153)); CBrush GelbBrush, *pNew1Brush; GelbBrush.CreateSolidBrush(RGB(25,25,112)); CBrush OrangeBrush, *pNew2Brush; OrangeBrush.CreateSolidBrush(RGB(154,205,50)); CBrush SteelBlueBrush, *pNew3Brush; SteelBlueBrush.CreateSolidBrush(RGB(100,149,237)); CBrush SpringGreenBrush, *pNew4Brush; SpringGreenBrush.CreateSolidBrush(RGB(46,139,87)); CBrush ForestBrush, *pNew5Brush; ForestBrush.CreateSolidBrush(RGB(34,139,34)); CBrush PinkBrush, *pNew6Brush; PinkBrush.CreateSolidBrush(RGB(107,142,35)); CBrush VioletBrush, *pNew7Brush; VioletBrush.CreateSolidBrush(RGB(127,155,0)); CBrush LavenderBrush, *pNew8Brush; LavenderBrush.CreateSolidBrush(RGB(255,250,250)); CBrush BlackBrush, *pNew9Brush; BlackBrush.CreateSolidBrush(RGB(0,0,0)); Wert=50; CString str; m_Pos = 10; //Deklaration Rechteckclient// str.Format("Wert=%d",rectclient.bottom); rect1.top=cy*0.05; rect1.bottom=cy*0.95; rect1.right=cx*0.95; rect1.left=cx*0.9; rect2.top=cy*0.05; rect2.bottom=cy*0.15; rect2.right=cx*0.9; rect2.left=cx*0.6; rect3.top=cy*0.05; rect3.bottom=cy*0.95; rect3.right=cx*0.6; rect3.left=cx*0.55; rect4.top=cy*0.85; rect4.bottom=cy*0.95; rect4.right=cx*0.9; rect4.left=cx*0.6; rect5.top=cy*0.2; rect5.bottom=cy*0.3; rect5.right=cx*0.55; rect5.left=cx*0.3; rect6.top=cy*0.3; rect6.bottom=cy*0.65; rect6.right=cx*0.35; rect6.left=cx*0.3; rect7.top=cy*0.65; rect7.bottom=cy*0.75; rect7.right=cx*0.55; rect7.left=cx*0.3; RectButton.top=cy*0.2; RectButton.bottom=cy*0.3; RectButton.right=cx*0.15; RectButton.left=cx*0.1; RectButton1.top=cy*0.2; RectButton1.bottom=cy*0.3; RectButton1.right=cx*0.25; RectButton1.left=cx*0.2; RectButton2.top=cy*0.4; RectButton2.bottom=cy*0.5; RectButton2.right=cx*0.15; RectButton2.left=cx*0.1; RectButton3.top=cy*0.4; RectButton3.bottom=cy*0.5; RectButton3.right=cx*0.25; RectButton3.left=cx*0.2; RectButton4.top=cy*0.6; RectButton4.bottom=cy*0.7; RectButton4.right=cx*0.15; RectButton4.left=cx*0.1; RectButton5.top=cy*0.6; RectButton5.bottom=cy*0.7; RectButton5.right=cx*0.25; RectButton5.left=cx*0.2; RectButton6.top=cy*0.8; RectButton6.bottom=cy*0.9; RectButton6.right=cx*0.15; RectButton6.left=cx*0.1; RectButton7.top=cy*0.8; RectButton7.bottom=cy*0.9; RectButton7.right=cx*0.25; RectButton7.left=cx*0.2; RectButton8.top=cy*0.8; RectButton8.bottom=cy*0.9; RectButton8.right=cx*0.35; RectButton8.left=cx*0.3; rectRahmen.top=cy*0.02; rectRahmen.bottom=cy*0.98; rectRahmen.right=cx*0.98; rectRahmen.left=cx*0.02; GetClientRect(&rectclient); cx=rectclient.right; cy=rectclient.bottom; struct rectSchlitten [8]; rectSchlitten[0].top=cy*0.85-m_nY; ///Ausführung Verschieben//// rectSchlitten[0].bottom=cy*0.95-m_nY; rectSchlitten[0].right=cx*0.95-m_nX; rectSchlitten[0].left=cx*0.9-m_nX; rectSchlitten[1].top=cy*0.05-m_nY; ///Ausführung Verschieben//// rectSchlitten[1].bottom=cy*0.15-m_nY; rectSchlitten[1].right=cx*0.95-m_nX; rectSchlitten[1].left=cx*0.9-m_nX; rectSchlitten[2].top=cy*0.05-m_nY; ///Ausführung Verschieben//// rectSchlitten[2].bottom=cy*0.15-m_nY; rectSchlitten[2].right=cx*0.6-m_nX; rectSchlitten[2].left=cx*0.55-m_nX; rectSchlitten[3].top=cy*0.05-m_nY; ///Ausführung Verschieben//// rectSchlitten[3].bottom=cy*0.15-m_nY; rectSchlitten[3].right=cx*0.6-m_nX; rectSchlitten[3].left=cx*0.55-m_nX; rectSchlitten[4].top=cy*0.2-m_nY; ///Ausführung Verschieben//// rectSchlitten[4].bottom=cy*0.3-m_nY; rectSchlitten[4].right=cx*0.6-m_nX; rectSchlitten[4].left=cx*0.55-m_nX; rectSchlitten[5].top=cy*0.2-m_nY; ///Ausführung Verschieben//// rectSchlitten[5].bottom=cy*0.3-m_nY; rectSchlitten[5].right=cx*0.35-m_nX; rectSchlitten[5].left=cx*0.3-m_nX; rectSchlitten[6].top=cy*0.65-m_nY; ///Ausführung Verschieben//// rectSchlitten[6].bottom=cy*0.75-m_nY; rectSchlitten[6].right=cx*0.35-m_nX; rectSchlitten[6].left=cx*0.3-m_nX; rectSchlitten[7].top=cy*0.65-m_nY; ///Ausführung Verschieben//// rectSchlitten[7].bottom=cy*0.75-m_nY; rectSchlitten[7].right=cx*0.6-m_nX; rectSchlitten[7].left=cx*0.55-m_nX; rectSchlitten[8].top=cy*0.85-m_nY; ///Ausführung Verschieben//// rectSchlitten[8].bottom=cy*0.95-m_nY; rectSchlitten[8].right=cx*0.6-m_nX; rectSchlitten[8].left=cx*0.55-m_nX; pNew8Brush=memdc.SelectObject(&LavenderBrush); memdc.Rectangle(&rectRahmen); pNewBrush=memdc.SelectObject(&RotBrush); memdc.Rectangle(&rect1); //Ausführungsbefehle// pNew1Brush=memdc.SelectObject(&GelbBrush); memdc.Rectangle(&rect2); pNew2Brush=memdc.SelectObject(&OrangeBrush); memdc.Rectangle(&rect3); pNew3Brush=memdc.SelectObject(&SteelBlueBrush); memdc.Rectangle(&rect4); pNew4Brush=memdc.SelectObject(&SpringGreenBrush); memdc.Rectangle(&rect5); pNew5Brush=memdc.SelectObject(&ForestBrush); memdc.Rectangle(&rect5); pNew6Brush=memdc.SelectObject(&PinkBrush); memdc.Rectangle(&rect6); pNew7Brush=memdc.SelectObject(&VioletBrush); memdc.Rectangle(&rect7); pNew7Brush=memdc.SelectObject(&BlackBrush); memdc.Rectangle(&RectButton); pNew7Brush=memdc.SelectObject(&BlackBrush); memdc.Rectangle(&RectButton1); pNew7Brush=memdc.SelectObject(&BlackBrush); memdc.Rectangle(&RectButton2); pNew7Brush=memdc.SelectObject(&BlackBrush); memdc.Rectangle(&RectButton3); pNew7Brush=memdc.SelectObject(&BlackBrush); memdc.Rectangle(&RectButton4); pNew7Brush=memdc.SelectObject(&BlackBrush); memdc.Rectangle(&RectButton5); pNew7Brush=memdc.SelectObject(&BlackBrush); memdc.Rectangle(&RectButton6); pNew7Brush=memdc.SelectObject(&BlackBrush); memdc.Rectangle(&RectButton7); pNew8Brush=memdc.SelectObject(&BlackBrush); memdc.Rectangle(&RectButton8); memdc.TextOut(250,20,"Visualisierung einer Fertigungs-Strasse"); rectSchlitten [0] = 0; for (i>0, i<8, i++) { if (rectSchlitten [i] =0) { pOldPen=memdc.SelectObject(&GruenStift); pOldBrush=memdc.SelectObject(&GruenBrush); memdc.Rectangle(&rectSchlitten[i]); } } str.Format("Wert=%d",rectclient.right); ///Rahmen Abmessung///// memdc.TextOut (100,50,str); str.Format("Wert=%d",rectclient.bottom); memdc.TextOut (190,50,str); pDC->BitBlt(0,0,cx,cy,&memdc,0,0,SRCCOPY); memdc.SelectObject(pOldPen); memdc.SelectObject(pOldBrush); CVisuDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // ZU ERLEDIGEN: Hier Code zum Zeichnen der ursprünglichen Daten hinzufügen } ///////////////////////////////////////////////////////////////////////////// // CVisuView Drucken BOOL CVisuView::OnPreparePrinting(CPrintInfo* pInfo) { // Standardvorbereitung return DoPreparePrinting(pInfo); } void CVisuView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // ZU ERLEDIGEN: Zusätzliche Initialisierung vor dem Drucken hier einfügen } void CVisuView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // ZU ERLEDIGEN: Hier Bereinigungsarbeiten nach dem Drucken einfügen } ///////////////////////////////////////////////////////////////////////////// // CVisuView Diagnose #ifdef _DEBUG void CVisuView::AssertValid() const { CView::AssertValid(); } void CVisuView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CVisuDoc* CVisuView::GetDocument() // Die endgültige (nicht zur Fehlersuche kompilierte) Version ist Inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CVisuDoc))); return (CVisuDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CVisuView Nachrichten-Handler void CVisuView::OnTimer(UINT nIDEvent) { /* int main() { int Schlitten [9]; for(i=0;i<9;i=i+1) { Schlitten [i] } } */ if (rectSchlitten.top == rect1.top) //&& rectSchlitten.left == rect1.left && rectSchlitten.right == rect1.right) { m_Pos = 20; } if (rectSchlitten.left == rect3.left) // && rectSchlitten.left == rect3.left) { m_Pos = 30; } if (rectSchlitten.bottom == rect3.bottom) // && rectSchlitten.left == rect3.left) { m_Pos = 40; } if (rectSchlitten.bottom == rect1.bottom && rectSchlitten.right == rect1.right) { m_Pos = 10; } if (m_Pos == 10) { m_nY++; } else if (m_Pos == 20) { m_nX++; } else if (m_Pos == 30) { m_nY--; } else if (m_Pos == 40) { m_nX--; } //Beep(100,1000);// m_XRect=m_XRect+5; //Deklaration Verschieben// Invalidate(); //Deklaration Neuzeichnen// CView::OnTimer(nIDEvent); } int CVisuView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; return 0; } void CVisuView::OnLButtonDown(UINT nFlags, CPoint point) { if(RectButton.PtInRect(point) !=0) { rectSchlitten [0]; } if(RectButton1.PtInRect(point) !=0) { m_nX = 0; // Reset, los gehts m_nY = 0; // Reset, los gehts } if(RectButton2.PtInRect(point) !=0) { m_nX = 0; // Reset, los gehts m_nY = 0; // Reset, los gehts } if(RectButton3.PtInRect(point) !=0) { m_nX = 0; // Reset, los gehts m_nY = 0; // Reset, los gehts } if(RectButton4.PtInRect(point) !=0) { m_nX = 0; // Reset, los gehts m_nY = 0; // Reset, los gehts } if(RectButton5.PtInRect(point) !=0) { m_nX = 0; // Reset, los gehts m_nY = 0; // Reset, los gehts } if(RectButton6.PtInRect(point) !=0) { m_nX = 0; // Reset, los gehts m_nY = 0; // Reset, los gehts } if(RectButton7.PtInRect(point) !=0) { m_nX = 0; // Reset, los gehts m_nY = 0; // Reset, los gehts } if(RectButton8.PtInRect(point) !=0) { m_nX = 0; // Reset, los gehts m_nY = 0; // Reset, los gehts } SetTimer(5,2,NULL); CView::OnLButtonDown(nFlags, point); } void CVisuView::OnRButtonDown(UINT nFlags, CPoint point) { KillTimer(1); CView::OnRButtonDown(nFlags, point); } void CVisuView::OnMove(int x, int y) { CView::OnMove(x, y); // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen } //DEL int CVisuView::m_ny() //DEL { //DEL //DEL } BOOL CVisuView::OnEraseBkgnd(CDC* pDC) { return false; return CView::OnEraseBkgnd(pDC); }
-
Äh toll, und was sollen wir damit?
Was ist dein Problem, außer dem eine richtige Frage zu formulieren und den betroffenen Code rauszusuchen?
-
Erstens: sfds
Zweitens: Kann sein, daß das jetzt unter den ellenlangen Quelltexten untergegangen ist, aber wo ist die Frage (bzw. dein Problem)?
-
Sorry in dem Quelltext habe ich versucht ein Array rectSchlitten zu bauen. Dann sollen diese bei rectBottom 1-8 abgefragt werden..
-
Kannst du uns (und dir selber) mal einen Gefallen tun und deinen Code auf die wesentlichen Aschnitte reduzieren? Kein (vernünftiger) Mensch wird sich die fast 700 Zeilen Quelltext durchlesen auf der Suche nach einem Problem, das du noch nicht einmal klar beschrieben hast.
Ansonsten: Was willst du erreichen? Und was hat dabei das "Array rectSchlitten" und der/die "rectBottom 1-8" zu tun?
-
Wir fehlt immer noch die Frage. Du wirst diesen Beitrag doch nicht nur geschrieben haben, damit wir jetzt deinen Code lesen, oder?
-
GetClientRect(&rectclient);
cx=rectclient.right;
cy=rectclient.bottom;struct rectSchlitten [8];
rectSchlitten[0].top=cy0.85-m_nY; ///Ausführung Verschieben////
rectSchlitten[0].bottom=cy0.95-m_nY;rectSchlitten[0].right=cx0.95-m_nX;
rectSchlitten[0].left=cx0.9-m_nX;rectSchlitten[1].top=cy0.05-m_nY; ///Ausführung Verschieben////
rectSchlitten[1].bottom=cy0.15-m_nY;rectSchlitten[1].right=cx0.95-m_nX;
rectSchlitten[1].left=cx0.9-m_nX;rectSchlitten[2].top=cy0.05-m_nY; ///Ausführung Verschieben////
rectSchlitten[2].bottom=cy0.15-m_nY;rectSchlitten[2].right=cx0.6-m_nX;
rectSchlitten[2].left=cx0.55-m_nX;rectSchlitten[3].top=cy0.05-m_nY; ///Ausführung Verschieben////
rectSchlitten[3].bottom=cy0.15-m_nY;rectSchlitten[3].right=cx0.6-m_nX;
rectSchlitten[3].left=cx0.55-m_nX;rectSchlitten[4].top=cy0.2-m_nY; ///Ausführung Verschieben////
rectSchlitten[4].bottom=cy0.3-m_nY;rectSchlitten[4].right=cx0.6-m_nX;
rectSchlitten[4].left=cx0.55-m_nX;rectSchlitten[5].top=cy0.2-m_nY; ///Ausführung Verschieben////
rectSchlitten[5].bottom=cy0.3-m_nY;rectSchlitten[5].right=cx0.35-m_nX;
rectSchlitten[5].left=cx0.3-m_nX;rectSchlitten[6].top=cy0.65-m_nY; ///Ausführung Verschieben////
rectSchlitten[6].bottom=cy0.75-m_nY;rectSchlitten[6].right=cx0.35-m_nX;
rectSchlitten[6].left=cx0.3-m_nX;rectSchlitten[7].top=cy0.65-m_nY; ///Ausführung Verschieben////
rectSchlitten[7].bottom=cy0.75-m_nY;rectSchlitten[7].right=cx0.6-m_nX;
rectSchlitten[7].left=cx0.55-m_nX;rectSchlitten[8].top=cy0.85-m_nY; ///Ausführung Verschieben////
rectSchlitten[8].bottom=cy0.95-m_nY;rectSchlitten[8].right=cx0.6-m_nX;
rectSchlitten[8].left=cx0.55-m_nX;so der Array ist falsch aufgebaut! sagt mir wer wie es richtig geht? und wie ich dann hier denn Array abfragen kann?
void CVisuView::OnLButtonDown(UINT nFlags, CPoint point)
{if(RectButton.PtInRect(point) !=0)
{rectSchlitten [0];
}
if(RectButton1.PtInRect(point) !=0)
{m_nX = 0; // Reset, los gehts
m_nY = 0; // Reset, los gehts}
if(RectButton2.PtInRect(point) !=0)
{m_nX = 0; // Reset, los gehts
m_nY = 0; // Reset, los gehts}
if(RectButton3.PtInRect(point) !=0)
{m_nX = 0; // Reset, los gehts
m_nY = 0; // Reset, los gehts}
if(RectButton4.PtInRect(point) !=0)
{m_nX = 0; // Reset, los gehts
m_nY = 0; // Reset, los gehts}
if(RectButton5.PtInRect(point) !=0)
{m_nX = 0; // Reset, los gehts
m_nY = 0; // Reset, los gehts}
if(RectButton6.PtInRect(point) !=0)
{m_nX = 0; // Reset, los gehts
m_nY = 0; // Reset, los gehts}
if(RectButton7.PtInRect(point) !=0)
{m_nX = 0; // Reset, los gehts
m_nY = 0; // Reset, los gehts}
if(RectButton8.PtInRect(point) !=0)
{m_nX = 0; // Reset, los gehts
m_nY = 0; // Reset, los gehts}
SetTimer(5,2,NULL);
CView::OnLButtonDown(nFlags, point);
}
-
Und wie äußert sich dieses "falsch aufgebaut"? Außer der Tatsache, daß du das Array lokal untergebracht hast und "struct" alleinstehend kein gültiger Typname ist, fällt mir jetzt nichts auf.
PS: sfds gilt immer noch

-
83 Syntaxfehler in dem ersten block. keine ahnung wieso die ; müssen da ja hin....
Danke
-
Von denen dürften die meisten wohl Folgefehler sein - also lös die Fehler am besten von oben nach unten auf

Der erste Fehler: in der Definition "struct rectSchlitten[8];" fehlt der Name des Typs für dein Array (oder für das Array, je nachdem wie du es drehst).
(und die Kennung 'struct' kannst du in C++ auch weglassen)
-
so habe es glaube ich bekomme nur einen Fehler nicht weg..
if (rectSchlitten [i]=0);
C:\Dokumente und Einstellungen\Fabian Wiederhake\Desktop\Schule\Visu7\VisuView.cpp(415) : error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'int' akzeptiert (oder keine geeignete Konvertierung mo
eglich)schon mal danke!
-
Zuweisung oder Vergleich ??
Klingelts ??
-
== schrieb:
Zuweisung oder Vergleich ??
Klingelts ??
Wow, gut erkannt.

Und was macht das ; da?
-
estartu schrieb:
Und was macht das ; da?

Vermutlich im Weg stehen

-
Prim3 schrieb:
so habe es glaube ich bekomme nur einen Fehler nicht weg..
if (rectSchlitten [i]=0);
C:\Dokumente und Einstellungen\Fabian Wiederhake\Desktop\Schule\Visu7\VisuView.cpp(415) : error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'int' akzeptiert (oder keine geeignete Konvertierung mo
eglich)schon mal danke!
wenn du vergleichen möchtest, wie hier der fall, musst du ein doppeltes gleichheeitszeichen verwenden, also "==" schreiben,