Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

mfc: invalidate zu träge?





Frage

Hallo Experten! Ich bin dabei ein Prog zu erstellen, dass einen AD-Wandler ausliest. Die Daten sollen kontinuierlich ausgelesen werden und per OnDraw gezeichnet werden. Dazu hab ich in einer Funktion eine Schleife gelegt, welche den AD-Wandler 5 pro Sekunde ausliest. Nach dem Auslesen erzwinge ich immer ein Refresh mit invalidate(). Leider zeichnet die OnDraw immer nur, nachdem die Schleife beendet ist. Ist die invalidate zu träge um 5 in der Sekunde neuzuzeichnen? Oder liegt es daran, das ich 2 views in einem single-document-projekt habe. Wer kann mir weiterhelfen? viel dank p.s.: wenn ich nach der Abfrage des AD-Wandlers ein AfxMessageBox aufrufe, wirds immer neu gezeichnet, dummerweise muss ich die Box ja immer wegklicken!

Antwort 1 von Josch

also wenn ich dich richtig verstanden habe, hast du folgendes

while (5 mal) {
lese AD;
invalidate();
}

es wird aber erst neu gezeichnet wenn die schleife abgearbeitet wurde.

das invalidate() setzt den bereich auf ungültig. win32 ruf bei der nächsten gelegenheit ondraw auf. nur solange die schleife abgearbeitet wird, kann keine andere methode aufgerufen werden, dh. dein programm hängt.

abhilfe : du musst in der schleife die windows nachrichten in deinem programm abarbeiten.

versuchs mal so

BOOL bRet;
MSG msg;
while((bRet=GetMessage(&msg,NULL,0,0))!=0)
{ 
    if (bRet == -1)
    {
        // handle the error and possibly exit
    }
    else
    {
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    }
}

josch

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: