PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehlermeldung beim belegen der rechten Maustaste


Ralf Kuhweide
10.10.2003, 18:43
Hallo ich brauche dringend HILFE habe gerade angefangen mit Visual C++.net. Ich sitzte vor meinem Buch ' Visual C++ in 21 Tagen' und habe auch bis zum vierten Tag alles verstanden. Aber nun habe ich echte Schwierigkeiten mit dem 5. Tag da soll man nämlich die Maustasten belegen und zwar so ,dass die rechte Maustaste einen roten und die linke Maustaste einen blauen Strich zieht, wenn ich nun das Programm nur für eine Taste schreibe; dann geht es auch, aber wenn ich es so schreibe, dass es beide Tasten belegt, kriege ich immer die Fehlermeldung 'MouseDlg.cpp(173): error C2065: 'lpen' : nichtdeklarierter Bezeichner'.

Ich hoffe ihr könnt mir da ein Stück weiter helfen.

Hier noch ein Auszug von dem Programmteil, der mir Sorgen macht:

void CMouseDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard.
// Linke oder rechte Maustaste gedrückt?
if (((nFlags & MK_LBUTTON) == MK_LBUTTON) ||
((nFlags & MK_RBUTTON) == MK_RBUTTON))
{
// Gerätekontext holen
CClientDC dc(this);

CPen *pPrevPen = NULL; // Zeiger auf den vorherigen Stift


{
if ((nFlags & MK_LBUTTON) == MK_LBUTTON)
// Neuen Stift erzeugen
CPen lpen(PS_SOLID, 16, RGB(255, 0, 0));



if ((nFlags & MK_RBUTTON) == MK_RBUTTON)
// Neuen Stift erzeugen
CPen lpen(PS_SOLID, 16, RGB(0, 0, 255));
}
// Den neuen Stift verwenden
pPrevPen = dc.SelectObject(&lpen);


// Linie vom letzten zum aktuellen Punkt zeichnen
dc.MoveTo(m_iPrevX, m_iPrevY);
dc.LineTo(point.x, point.y);

// Aktuellen Punkt als letzten Punkt speichern
m_iPrevX = point.x;
m_iPrevY = point.y;

// Vorherigen Stift wieder herstellen
dc.SelectObject(pPrevPen);
}

CDialog::OnMouseMove(nFlags, point);
}


Pulpapex
12.10.2003, 00:17
Ich kann zwar kein C/C++, aber ist das hier korrekt?
// Neuen Stift erzeugen
CPen lpen(PS_SOLID, 16, RGB(255, 0, 0));Irgendwie fehlt mir da ne Zuweisung. Etwa in dieser Art:
CPen lpen = new CPen(PS_SOLID, 16, RGB(255, 0, 0));So ähnlich würde es jedenfalls in C# aussehen.


Gruß
Pulpapex

Edit: Ausserdem deklarierst du lpen im if-Block. Eine im Block deklarierte Variable ist auch nur innerhalb des Blockes sichtbar.

Ralf Kuhweide
12.10.2003, 21:19
Hallo Pulpapex
Danke für den Denkanstoß.
Die Zeile war schon richtig, aber mit den Variablen da hast du mich auf den richtigen Weg gebracht.

DANKE!!!

MfG
Ralf Kuhweide