Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Invalidate funktioniert nicht in normaler Methode

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.02.2006, 22:35 Uhr
~Daniela
Gast


Hi,

ich hab ein MFC Programm mit SDI Architektur.

Darin eine Menüleiste.

Beim Drücken einer der Buttons wird ein Dialog aufgerufen, da gibt man 3 Werte ein ( RGB Wert für meine Punkte), bei ONOK werden die Werte übernommen.
Das übernehmen klappt.
Danach ruf ich Invalidate() auf aber es wird nichts neu gezeichnet.

Hab jetzt exra nen Actionhandler für LButtonDOwn gemacht damit mit linksklick manuell alles neugezeichnet wird.

Ich möchte aber direkt nachdem die Viewklasse die neuen RGB werte des Dialoges übernommen hat einen bereich neu zeichnen lassen.
Die Invalidate bzw. invalidaterect aufrufe werden anscheinend ienfach ignoriert.

Hier mal die view klasse:


C++:
// Ex05aV2View.cpp : Implementierung der Klasse CEx05aV2View
//

#include "stdafx.h"
#include "Ex05aV2.h"

#include "Ex05aV2Doc.h"
#include "Ex05aV2View.h"
#include "RGBBox.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CEx05aV2View

IMPLEMENT_DYNCREATE(CEx05aV2View, CView)

BEGIN_MESSAGE_MAP(CEx05aV2View, CView)
    ON_WM_PAINT()
    ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()

// CEx05aV2View-Erstellung/Zerstörung

CEx05aV2View::CEx05aV2View()
{
    // TODO: Hier Code zur Konstruktion einfügen
    
}

CEx05aV2View::~CEx05aV2View()
{
}

BOOL CEx05aV2View::PreCreateWindow(CREATESTRUCT& cs)
{
    // TODO: Ändern Sie hier die Fensterklasse oder die Darstellung, indem Sie
    //  CREATESTRUCT cs modifizieren.

    return CView::PreCreateWindow(cs);
}

// CEx05aV2View-Zeichnung

void CEx05aV2View::OnDraw(CDC* pDC)
{
    for(int i = 0; i <= 200; i++) {
        for(int j = 0; j <= 200; j++) {
            pDC->SetPixel(i, j, RGB(theApp.r, theApp.g, theApp.b));
        }
    }
    // TODO: Code zum Zeichnen der systemeigenen Daten hinzufügen
}


// CEx05aV2View-Diagnose

#ifdef _DEBUG
void CEx05aV2View::AssertValid() const
{
    CView::AssertValid();
}

void CEx05aV2View::Dump(CDumpContext& dc) const
{
    CView::Dump(dc);
}

CEx05aV2Doc* CEx05aV2View::GetDocument() const // Nicht-Debugversion ist inline
{
    ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEx05aV2Doc)));
    return (CEx05aV2Doc*)m_pDocument;
}
#endif //_DEBUG


// CEx05aV2View-Meldungshandler
void CEx05aV2View::OnRGBBox() {
    CRGBBox InsertRGB;
    
    if(InsertRGB.DoModal() == IDOK) {
        theApp.r = InsertRGB.m_nR;
        theApp.g = InsertRGB.m_nG;
        theApp.b = InsertRGB.m_nB;
    }
    Invalidate(NULL); // Funktioniert nicht
}

void CEx05aV2View::OnLButtonDown(UINT nFlags, CPoint point)
{
    Invalidate(); // Funktioniert
}


Danke für eure Hilfe

Daniela

P.S. ich benutze Visual Studio 2005 Pro (gabs für Studenten an unserer FH kostenlos, MSDNAA Programm ) und Windows XP SP2
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: