nichtdeklarierter Bezeichner
-
nabend ,
also soll ein programm programmieren das 3 quadrate anzeigt und wenn man mit der maus über eins dieser quadrate fährt erscheint ein foto...
soweit eigentlich kein problem nur bekomme ich diese fehlermeldung:
error C2065: 'pDC' : nichtdeklarierter Bezeichnerwäre echt nett,wenn ihr mir da helfen könntet!
-
sehr lustig...
Also ich hab keine Kristallkugel, aber JochenKalmbach hat eine vielleicht kann er dir ja helfen ohne das du Code postest.
-
ok
sorry..
also der code für die quadrate:
void CKstenView::OnDraw(CDC* pDC) { CKstenDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); pDC->Rectangle(100,100,200,200); pDC->Rectangle(250,100,350,200); pDC->Rectangle(400,100,500,200); // ZU ERLEDIGEN: Hier Code zum Zeichnen der ursprünglichen Daten hinzufügen }
und der code für die funktion:
void CKstenView::OnMouseMove(UINT nFlags, CPoint point) { CClientDC dc(this); if(point.x>=100&&point.x<=100&&point.y>=200&&point.y<=200) { CBitmap Bild; Bild.LoadBitmap(IDB_BILD); BITMAP bm; Bild.GetObject(sizeof(bm),&bm); CDC MemDC; MemDC.CreateCompatibleDC(pDC); MemDC.SelectObject(&Bild); pDC->BitBlt(0,0, bm.bmWidth,bm.bmHeight,&MemDC, 0,0,SRCCOPY); } else { dc.TextOut(540,90,"außen"); } CView::OnLButtonDown(nFlags, point); }
^^ hierbei handelt es sich nur um einen test ,das textout in dem zusammenhang keinen sinn ergibt ,ist mir schon klar
-
Versuch mal statt pDC->BitBlt(...), this GetDC()->BitBlt(...).
Du solltest aber schon in OnPaint zeichnen und nicht sonstwoEdit: Ich meinte natürlich OnDraw, sorry.
-
LJ_1102 schrieb:
Also ich hab keine Kristallkugel, aber JochenKalmbach hat eine vielleicht kann er dir ja helfen ohne das du Code postest.
Wieso? Du hast Sie doch letzte Woche von mir ausgeliehen!!!
-
hm erstmal besten dank für eure beiträge nur wenn es nicht möglich ist in on mouse move zu zeichnen ,wie kann ich dann meine aufgabe verwirklichen 3 kästen zu zeichnen in denen beim klicken in den kasten ein bild erscheint ?
-
Es ist schon möglich in MouseMove zu zeichnen, aber erstens wird dann immer neu gezeichnet wenn du die Maus bewegst (sehr ungünstig) und zweitens wird dein Bild nicht neu gezeichnet wenn es z.B. von einem anderen Fenster verdeckt wurde.
Zum Problem:
Du könntest z.B. in der OnLeftButtonUp eine Member-Variable vom Typ bool auf TRUE setzten, dann mit Invalidate() OnDraw aufrufen und dort auf die boolsche Variable reagieren.Edit: äh, wie nun, soll beim Klicken o. beim drüberfahren das Bild erscheinen?
-
besten dank werd das mal versuchen,eine frage noch...
weisst du zufällig wie man ein quadrat (rectangle) mit farbe füllt also bin schon ein stück weit gekommen nur da wo die fragezeichen stehen weiss ich nciht genau was ich da einsetzten muss. :
if(point.x>=100&&point.x<=100&&point.y>=200&&point.y<=200)
{
??????
}
else{
??????
}
-
if(point.x>=100&&point.x<=100&&point.y>=200&&point.y<=200) { dc.FillSolidRect( LPCRECT lpRect, COLORREF clr ); } else { dc.FillSolidRect( LPCRECT lpRect, COLORREF clr ); }
Gruß
Matthias
-
danke
und wo wird dann die farbangabe definiert ?
-
alles klar habs schon ...
dc.FillSolidRect (CRect(10,10,100,100), 10);
trotzdem danke
-
Dort wo COLORREF steht ist eigentlich ein DWORD gemeint, es gibt dazu aber ein Makro: RGB( r,g,b ) damit kannst Du halt rot o. so einstellen.