ProgressBar in neuem Fenster [gelöst]



  • Hallo,
    ich bin gerade dabei in einem neuen Fenster eine Progressbar zu erstellen [ich nehme deswegen ein neues Fenster weil meine Hauptanwendung eigentlich eine Konsolenanwendung ist und die Konsole leider nunmal keine Progressbars wie in WinForms kennt 😞 ].

    ich habe auch schon ein neues Fenster(incl. Fensterklasse) erstellt;

    dort habe ich folgende Wnd-Proc eingefügt:

    LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    { 
    	HINSTANCE hInst=NULL;
               switch(msg)
                   {
                   case WM_CREATE:
    
                   INITCOMMONCONTROLSEX InitCtrlEx;
                   InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
                   InitCtrlEx.dwICC  = ICC_PROGRESS_CLASS;                
                   InitCommonControlsEx(&InitCtrlEx); 
                   CreateWindowEx( 0,PROGRESS_CLASS,NULL,WS_CHILD | WS_VISIBLE,10, 10,300,20,hwnd,NULL,hInst, NULL); 
                   return 1; 
    			   break;                                      
                   case WM_CLOSE:
                   DestroyWindow(hwnd);
                   break;
    
                   case WM_DESTROY:
                   PostQuitMessage(0);
                   break;
    
                   default:
                   return DefWindowProc(hwnd, msg, wParam, lParam);
    		   }
    
           return 0;
           }
    

    damit funktioniert soweit auch alles wunderbar, ich bekomme mein neues Fenster und eine Progressbar im Fenster;

    Nur wie kann ich jetzt den Wert der ProgressBar (den parameter Value aus WinForms) setzen?
    eine ProgressBar die immer bei 0% stehen bleibt ist ja nutzlos^^

    danke schonmal,
    andi01;



  • Dazu brauchst du folgende Nachrichten, die du mit SendMessage an die ProgressBar schickst: PBM_SETRANGE, PBM_SETSTEP, PBM_STEPIT und es gab auch noch eine mit der man den Wert direkt ändern konnte, aber mir fällt der Name leider nicht mehr ein. Google einfach danach und du findest alles was du brauchst.





  • danke an euch beide, genau danach hatte ich gesucht 👍

    im übrigen habe ich auch noch die message gefunden um die Position direkt zu setzen: sie heißt PBM_SETPOS 🙂

    jetzt bleibt nur noch eine kleinigkeit : im moment besteht die progressBar aus vielen einzelnen Balken, was es etwas ungenau macht. kann man das so einstellen dass es ein fortlaufender Balken wird?

    hier mal 2 screens:

    so ist es jetzt: http://img46.imageshack.us/img46/2995/zwischenablage01.png
    und so soll es sein: http://img444.imageshack.us/img444/6389/zwischenablage02.png

    wie kriege ich das auch noch hin?

    danke schonmal,
    andi01



  • mit dem stil PBS_SMOOTH



  • hm also ich habe jetzt diesen Stil verwendet und das ist das Ergebnis: 😞
    http://img441.imageshack.us/img441/3396/zwischenablage01o.png

    [unter Win XP]

    also ich habe den Stil als ersten Parameter von CreateWindowEx() eingefügt:

    CreateWindowEx(PBS_SMOOTH,PROGRESS_CLASS,NULL,WS_CHILD | WS_VISIBLE,10, 10,300,20,hwnd,NULL,hInst, NULL);
    

    das war doch richtig oder?



  • ok habe das problem jetzt selbst gelöst xDD ich musste PBS_SMOOTH in den 4. statt den 1.parameter einfügen:

    CreateWindowEx(0,PROGRESS_CLASS,NULL,WS_CHILD | WS_VISIBLE | PBS_SMOOTH,10, 10,300,20,hwnd,NULL,hInst, NULL);
    

    danke an alle, jetzt funktioniert es einwandfrei 🙂


Anmelden zum Antworten