Cursorposition und Probleme mit Canvas

tokian

Grünschnabel
Hallo!

Mal wieder ein Topic eines Laien. Ich habe C++ Programmierung in der Schule als LK und wir sollen ein 4 gewinnt spiel programmieren.Wir arbeiten mit dem Borland C++ Builder. Alles so weit gut, bis auf 2 Dinge:

Zum einen würde ich gerne die Cursorpsotion herausfinden und damit arbeiten, aber wie geht es unter C++ Habe dafür nur einen Delphi-Befehl gefunden:

Code:
x:= (Mouse.CursorPos.X - Form1.Left - 20) div 50;

habe den wie folgt nach C++ übersetzt:

Code:
x=(Mouse->CursorPos->X - Form1->Left-20);

kann jemand von euch Profis dadrin einen Fehler sehen?


Nun zu dem Canvas Problem:

Es soll auf Buttonclick ein Rechteck auf der Form erscheinen, dadrin soll dann gearbeitet werden. Nachdem diese geöffnet wird, soll eine Prozedur, die direkt dahinter eingegeben wird, damit arbeiten. Aber beim Starten des Programmes zeigt es bei mir den Fehler "Undefined symbol 'Canvas' " an.
Leider ist mein Lehrer nicht fähig mir dabei zu helfen!

Hier nochmal der betreffende Programmtext:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Spielneu();
Canvas->Rectangle(10,10,370,320);
Canvas->Brush->Color = clBlue;
Spielstandzeichnen();
}

Das ist die Button-Methode!

Spielneu:

void Spielneu()
{
{
Farbe = 1;
for (x=0;x<6;x++)
{
for (y=0;y<5;y++)
{
Feld [x][y]=0;
}
}
}
}
;

Spielstandzeichen dort wird der Fehler angezeigt

void Spielstandzeichnen()
{
for (x=0;x<6;x++)
{
for (y=0;y<5;y++)
{
if (Feld[x][y] == 0)
{
Canvas->Ellipse(20+ x*50,20+y*50,60+ x*50,60+ x*50);
Canvas->Brush->Color=clGray;
}
if (Feld[x][y] == 1)
{
Canvas->Ellipse(20+ x*50,20+y*50,60+ x*50,60+ x*50); dort tritt der Fehler auf
Canvas->Brush->Color=clRed;
}
if (Feld[x][y] == 2)
{
Canvas->Ellipse(20+ x*50,20+y*50,60+ x*50,60+ x*50);
Canvas->Brush->Color=clYellow;
}
}
}
}
;


Ich freue mich sehr über jede Hilfe, und falls noch mehr Informationen benötigt werden, werde ich mein bestes geben!

LG,

Anna
 
Hallo,

hier ein Beispiel wie man die CursorPosition auf dem Form auslesen kann:

Code:
   TPoint *mausxy = new TPoint;
   GetCursorPos(mausxy);
   
   int x = mausxy->x - Form1->Left;
   int y = mausxy->y - Form1->Top;
   
   Label1->Caption = "X= " + IntToStr(x) + " Y= " + IntToStr(y);
   
   delete mausxy;

Und zu deinem Problem mit dem Canvas du musst in der externen Funktion zB Form1->Canvas schreiben weil der Compiler sonst nicht weis welchen Canvas du meinst.
 
Zuletzt bearbeitet:
Zurück