2

win32apiでこのプログレスバーを更新するにはどうすればよいですか?あなたはここで完全なコードを見つけることができますコードはここにあります

hProgress=CreateWindowEx(0, PROGRESS_CLASS, NULL,
                       WS_CHILD | WS_VISIBLE,
                  20, 20, 260, 17,
                  hwnd, NULL, g_hInst, NULL);
4

4 に答える 4

4

探しているメッセージはPBM_SETPOSです。これの使用法は、範囲が現在設定されているものによって異なります(デフォルトは0〜100)。たとえば、デフォルトの範囲を想定すると、位置を半分に設定すると、次のようになります。

SendMessage(hProgress, PBM_SETPOS, 50, 0);

または、プログレスバーをPBM_STEPITを介して段階的にインクリメントすることもできます。これの使用法は、ステップ増分が何であるかによって異なります(デフォルトは10)。たとえば、プログレスバーのデフォルトの範囲と初期位置を想定すると、位置を10にステップすることは次のように行われます。

SendMessage(hProgress, PBM_STEPIT, 0, 0);
于 2012-04-23T14:59:34.513 に答える
2

メッセージを使用しPMB_STEPITて、ステップサイズに基づいて現在の位置を移動できます。

int max_range = 1000;

// set range of progress bar
SendMessage(hProgress, PBM_SETRANGE, 0, MAKELPARAM(0, max_range));

// set the step size
SendMessage(hProgress, PBM_SETSTEP, (WPARAM) 1, 0); 

// increment by step size
SendMessage(hProgress, PBM_STEPIT, 0, 0);

これが良い例ですHow to Use Progress Bar Controls

于 2012-04-23T15:03:49.777 に答える
2

共通のコントロールを初期化したと仮定します。

INITCOMMONCONTROLSEX InitCtrlEx;

InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitCtrlEx.dwICC  = ICC_PROGRESS_CLASS;
InitCommonControlsEx(&InitCtrlEx);

範囲を設定します。

SendMessage(hProgress, PBM_SETRANGE, 0, MAKELPARAM(min, max)); 

位置を設定します。

SendMessage(hProgress,PBM_SETPOS,pos,0);

参照:MSDNドキュメント

于 2012-04-23T15:05:34.933 に答える
0

プログレスバーの進行状況を更新するだけでなく、再描画する機会も与える必要があります。通常、作業で忙しいために進行状況バーが表示されているため、通常のメッセージループは実行されておらず、WM_PAINTメッセージは生成されません。UpdateWindowすぐに呼び出してウィンドウを再描画できます。

于 2012-04-23T15:06:18.607 に答える