008
15.09.2003, 16:10 Uhr
proga
|
Zitat: |
~erlanger24 postete Hab euren rat umgesetzt ! Das Kopieren funktioniert jetzt auch ganz super aber ich hab noch das Problem das das Programm wärend des kopierens "tot" ist da es sich ja in einer schleife befindet und daher keinen neuen Bildaufbau macht .
Wie bekomme ich in dem Prog ne Statusanzeige hin ? Das der Anwender kein totes Programm hat ?
|
Ich habe so etwas schon mal gemacht...
C++: |
HWND hProgressBar; /*************************************************************************** * Shows a progress bar while copying a file */ void ShowProgressBar(HWND hParentWindow) { INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls); InitCtrls.dwICC = ICC_PROGRESS_CLASS;
char Text[50] = "Copy file "; strcat(Text, chFNDest); strcat(Text, " to Drive A: . . .");
BOOL bResult = InitCommonControlsEx(&InitCtrls); hProgressBar = CreateWindowEx( WS_EX_APPWINDOW | WS_EX_TOPMOST, // DWORD dwExStyle, // extended window style PROGRESS_CLASS, // LPCTSTR lpClassName, // registered class name Text, // LPCTSTR lpWindowName, // window name WS_CAPTION /*| WS_POPUPWINDOW*/ /*| WS_CHILD*/ | WS_VISIBLE,// | PBS_SMOOTH, 300, // int x, // horizontal position of window 300, // int y, // vertical position of window 600, // int nWidth, // window width 50, // int nHeight, // window height hParentWindow, // HWND hWndParent, // handle to parent or owner window 0, // HMENU hMenu, // menu handle or child identifier 0, // HINSTANCE hInstance, // handle to application instance 0 // LPVOID lpParam // window-creation data ); SendMessage(hProgressBar, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); SendMessage(hProgressBar, PBM_SETSTEP, (WPARAM) 1, 0); }
DWORD WINAPI CopyThread(LPVOID lpThreadParameter) { // hier den Code zum Kopieren und zum Senden von Nachrichten an die Scrollbar }
// in main -> Datei kopieren ShowProgressBar(NULL); DWORD ThreadId = 0; HANDLE hThread = CreateThread(NULL, NULL, CopyThread, NULL, NULL, &ThreadId); do { GetExitCodeThread(hThread, &ExitCode);
MSG message; if (::PeekMessage(&message, hProgressBar, 0, 0, PM_REMOVE)) { ::TranslateMessage(&message); ::DispatchMessage(&message); } } while (ExitCode == STILL_ACTIVE); CloseHandle(hThread); hThread = NULL; SendMessage(hProgressBar, WM_CLOSE, 0, 0); hProgressBar = NULL;
|
Dieser Post wurde am 15.09.2003 um 16:27 Uhr von proga editiert. |