CpoyFileEx blockiert Anwendung

Opscript

Grünschnabel
CopyFileEx blockiert Anwendung

Hallo,

habe mir eine WINAPI Anwendung geschrieben, die Ordner und Dateien von CD auf ein wählbares beschreibbares
Laufwerk kopiert. Arbeite hier mit der Funktion CopyFileEx. Die Software arbeitet auch ohne Probleme.
Zur Kontrolle lasse ich mir das Ergebnis welche Datei gerade kopiert wird u.s.w. , anzeigen.
Verschiebe ich nun das Fenster an eine andere Stelle, wird weiter kopiert aber die Anzeige der Daten
in den Editboxen bleibt stehen.

Suche jetzt schon seit ein paar Tagen ohne Erfolg nach einer Lösung.
Kann mir jemand einen Tipp geben, wie das zu ändern ist?

Arbeite mit Dev-C++.


Hier ein Auszug wo die Kopierfunktion gestartet wird:

Code:
case WM_COMMAND:
{
          
    if(lParam==(LPARAM)hButtonExit && HIWORD(wParam)==BN_CLICKED) // Button beenden
    {   
        SendMessage(hwnd,WM_CLOSE,0,0);
    }
            
    if(lParam==(LPARAM)hButtonDna && HIWORD(wParam)==BN_CLICKED) // Button starten
    {
        char szTextTo[256];                  

        // Text aus der Editbox holen
        GetWindowText (hwndTo, szTextTo, 256);
        GetWindowText (hwndZiel, szTextTo, 256);
        // Diesen Text in das Label schreiben und
        // den Text der Editbox löschen
        SetWindowText (hwndZiel, szTextTo);
        SetWindowText (hwndTo, szTextTo);
               
        char lwBuchstabe[1];
        lwBuchstabe[0] = szTextTo[0];
               
        if(laufwerke(lwBuchstabe)!=true)
        {
            MessageBox(hwnd, "Das angegebene Laufwerk ist nicht vorhanden!\n"
                       "oder eine CD-ROM! Bitte korrigieren Sie Ihre Eingabe.",
                       "",MB_OK | MB_ICONERROR);     
        }
        else
        {
            int gesamt;
            gesamt = rekursivDirFileSize(lauferkFrom);//Gesamtgröße in Byte ermitteln
                                                      //Übergabe an die rekursive Funktion
                                                      //kopieren!
            
                     kopieren(hwndPB,// Daten an InitCommonControls() senden
                     hwndTextDatei, // Daten zum Anzeigen der bereits kopierten Dateien.
                     hwndDateiGroesse,// Daten zum Anzeigen der Dateigröße.
                     hwndDateiAnzahl, // Anzahl der bereits kopierten Dateien
                     lauferkFrom, // Startlaufwerk
                     szTextTo,// Ziellaufwerk
                     gesamt); //Rekursive Funktion zum kopiren und ausgeben der Daten
                                    
            char ergebnis[256];
            strcpy(ergebnis,"Kopieren nach "); 
            strcat(ergebnis,szTextTo);
            strcat(ergebnis," erfolgreich beendet");
                  
            MessageBox(hwnd, ergebnis,"", MB_OK);
                  
            DestroyWindow(hwnd);
                  
          }
    }
    return 0;
}
 
Zuletzt bearbeitet:
Du blockierst die Nachrichtenverarbeitung des Fensters beim Kopieren. Deshalb werden die neuen Texte nicht angezeigt.

Wenn du innerhalb der Kopierfunktion die Text-Anzeigen änderst, dann rufe danach UpdateWindow mit dem jeweiligen HWND auf. Das sollte die Anzeigen anpassen.
 
Zurück