fortschrittsanzeige...



  • hallo,
    hab mal folgende frage.
    wenn ich eine datei übers inet verschicke möchte ich auch gern den fortschritt grafisch darstellen.
    am besten wäre so eine statusanzeige wie bei einer normalen instal. .
    wie könnte ich das umsetzen ?
    ich weis, im resourceskripteditor existiert ein solches steuerelement nur weis ich leider nicht wie ich das ansprechen soll.
    über tipps würde ich mich sehr freuen.

    mfg arne 😃



  • Progress Bar control
    Ansonsten beschreib dein Problem etwas genauer.



  • ne genau sowas meint ich.

    danke für deine hilfe



  • hallo,
    nun hab ich noch ein kleines problem.

    ich lese daten aus einer datei und möchte die den fortschritt darunter in einem editwindow ausgeben lassen.
    leider wird das editfenster erst zum schluss ausgegeben abwohl es in der zeit des lesens permanent daten gesendet bekommt.

    wenn ich aber die whileschleife auskommentiere dann funktioniert es, halt nur ohne erhöhung der prozentanteile 🙂

    wenn jemand einen tipp hat würde ich mich sehr freuen.

    case (HMENU)2:
                                initComCtrl.dwICC   = ICC_PROGRESS_CLASS;
                                initComCtrl.dwSize  = sizeof( INITCOMMONCONTROLSEX );
    
                                InitCommonControlsEx( &initComCtrl );
    
                                hFile = CreateFile( TEXT("C://Test.txt") , GENERIC_READ , FILE_SHARE_READ , (LPSECURITY_ATTRIBUTES) NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL ); 
    
                                if( hFile == INVALID_HANDLE_VALUE )
                                {
                                    MessageBox( NULL , TEXT("Fehler, Datei konnte nicht geöffnet werden") , szAppName , MB_OK );
                                    return 0;
                                }
    
                                hStatus      = CreateWindowEx( 0 , TEXT("Edit") , TEXT("test") , WS_CHILD | WS_VISIBLE | ES_READONLY , 10 , 100 , 149 , 15 , hWnd , (HMENU)3 , hInstance , NULL );
                                SendMessage( hStatus , WM_SETFONT , (WPARAM)GetStockObject( DEFAULT_GUI_FONT) , 0 );
    
                                hProgressBar = CreateWindow( PROGRESS_CLASS , NULL , WS_CHILD | WS_VISIBLE , 10 , 40 , 150 , 15 , hWnd , (HMENU)1 , hInstance , NULL );
                                SendMessage( hProgressBar , PBM_SETBARCOLOR , 0 , (LPARAM)(COLORREF)RGB( 119 , 162 , 209 ) );
    
                                dwGroesse = GetFileSize( hFile , NULL );
                                dwTeil = dwGroesse / 2048;
                                SendMessage( hProgressBar , PBM_SETRANGE , 0 , MAKELPARAM( 0 , dwTeil ) );
                                SendMessage( hProgressBar , PBM_SETSTEP , (WPARAM) 1 , 0 );
    
                                do
                                {
                                    ReadFile( hFile , &szText , sizeof( char ) * 2048 , &dwTeil , NULL );
                                    SendMessage( hProgressBar , PBM_STEPIT , 0 , 0 );
                                    dwGesamt += dwTeil;
                                    wsprintf( szBuffer , "Fortschritt: %3i Prozent", (int)( ( dwGesamt / dwGroesse ) * 100 ) );
                                    SetWindowText( hStatus , szBuffer );
    
                                }
                                while( dwTeil );
    
                                DestroyWindow( hProgressBar );
                                DestroyWindow( hStatus );
                                CloseHandle( hFile );
                                return 0;
    


  • keiner ne kleine idee bzw. nen tipp ?

    mfg anre



  • das liegt daran, dass dein Programm in der schleife "hängt" und somit die Graphische Oberfläche nicht neu zeichnen kann. Wenn du das ganze in einem extra Thread machst sollte es funktionieren

    MFG Julez


Anmelden zum Antworten