ファイルをダウンロードしてフォルダーに配置する必要がある Windows API を使用して、MS Visual C++ でアプリケーションに取り組んでいます。
URLDownloadToFile 関数を使用してダウンロードを既に実装していますが、ファイルのダウンロード中にマーキー スタイルの PROGRESS_CLASS プログレス バーを作成したいのですが、その過程でアニメーション化されないようです。
これは、ダウンロードに使用する関数です。
BOOL SOXDownload()
{
HRESULT hRez = URLDownloadToFile(NULL,
"url","C:\\sox.zip", 0, NULL);
if (hRez == E_OUTOFMEMORY ) {
MessageBox(hWnd, "Out of memory Error","", MB_OK);
return FALSE;
}
if (hRez != S_OK) {
MessageBox(hWnd, "Error downloading sox.", "Error!", MB_ICONERROR | MB_SYSTEMMODAL);
return FALSE;
}
if (hRez == S_OK) {
BSTR file = SysAllocString(L"C:\\sox.zip");
BSTR folder = SysAllocString(L"C:\\");
Unzip2Folder(file, folder);
::MessageBoxA(hWnd, "Sox Binaries downloaded succesfully", "Success", MB_OK);
}
return TRUE;
}
後で、WM_CREATE 内 (メイン ウィンドウのメッセージ プロセッサ内) を呼び出します。
if (!fileExists("C:\\SOX\\SOX.exe")) {
components[7] = CreateWindowEx(0, PROGRESS_CLASS,
NULL, WS_VISIBLE | PBS_MARQUEE,
GetSystemMetrics(SM_CXSCREEN) / 2 - 80,
GetSystemMetrics(SM_CYSCREEN) / 2 + 25,
200, 50, hWnd, NULL, NULL, NULL);
SetWindowText(components[7], "Downloading SoX");
SendMessage(components[7], PBM_SETRANGE, 0, (LPARAM) MAKELPARAM(0, 50));
SendMessage(components[7], PBM_SETMARQUEE, TRUE, MAKELPARAM( 0, 50));
SOXDownload();
SendMessage(components[7], WM_CLOSE, NULL, NULL);
}
そして、私が望むように、小さな進行状況バーが表示されます...しかし、それはアニメーション化されておらず、カーソルをバーの上に置くと、カーソルはプログラムがファイルのダウンロードでビジーであることを示します.
ダウンロードが完了すると、要求どおりにウィンドウが閉じます。SendMessage(components[7], WM_CLOSE, NULL, NULL);
問題は、ファイルのダウンロード中にバーを移動させるにはどうすればよいかということです。シンプルにするためにマーキースタイルでやりたいと考えています。
前もって感謝します。