gezeichnetes Rechteck verschwindet
-
Ich muss also meine Funktion DrawRect aus OnPaint aufrufen und OnPaint aus LButtonDown?
ist das so richtig ?ShadowEater
-
DrwRect musst Du (nur) aus OnPaint aufrufen.
Und in "LButtonDown" musst Du "InvalidateRect()" aufrufen.
-
Hmmm, aber wenn ich in onPaint DrawRect aufrufe ist das Rechteck gleich zu Programmstart zu sehen, ich möchteb aber dass es erst bei LButtonDown erscheint und sichtbar bleibt wenn das Fenster neu positioniert wird.
ShadowEater

-
Mach dir doch nen bool, obs gezeichnet werden soll oder nicht.

-
Tut mir leid aber ich komm nict drauf
, hier mal meine beiden Funktionen :void CSieb3View::OnFileNew() { CDC *pDC = new CDC; pDC = GetDC (); mark(pDC); // mark = markieren, hir wird gezeichnet bool zeichnen; zeichnen = ???; if (zeichnen == ???) { OnPaint(); } zeichnen = ???; }void CSieb3View::OnPaint() { CPaintDC dc(this); CDC *pDC = new CDC; pDC = GetDC (); createGrid (pDC); createNumbers (pDC); mark(pDC); }bin echt dankbar für eure Hilfe !
ShadowEater
-
Nanana, als lokale Variable hilft dir der bool nicht.
Mach den mal als Member in der Klasse.Und dann sollte es etwa so gehen:
void CSieb3View::OnFileNew() { // Hier wird nicht mehr gezeichnet! m_zeichnen = true; Invalidate(); // OnPaint ruft man nicht direkt auf, sondern so. }void CSieb3View::OnPaint() { if (m_zeichnen) { CPaintDC dc(this); CDC *pDC = new CDC; pDC = GetDC (); createGrid (pDC); createNumbers (pDC); mark(pDC); } }
-
Hi estardu,
hab folgendes von Hand in die View.h eingefügt :
// Attribute public: CSieb3Doc* GetDocument(); bool m_zeichnen;//<------------------------------- // Operationen public:Starte ich den Code ist die Markierung wieder da !

regards
ShadowEater
-
Du musst das im Konstruktor noch initialisieren!
m_zeichnen = false;
-
Jaaa jetzt klapps bis auf ein paar Details

Danke estardu, nur reis aus Interesse gibts da auch ne Möglichkeit das über Zeiger irgendwie zu machen ?
regards
ShadowEater
-
Zeiger?

Was für Zeiger? Wodrauf sollen die zeigen?