代码之家  ›  专栏  ›  技术社区  ›  encoreleeet

C++Builder/Winapi不同的加载/进度条类型[已关闭]

  •  0
  • encoreleeet  · 技术社区  · 10 年前

    如何创建“加载”ProgressBar,如下图所示?我甚至不知道如何用谷歌搜索。我在寻找一种前后移动的浮动绿色条:

    image

    不是这样的标准ProgressBar:

    image

    1 回复  |  直到 10 年前
        1
  •  3
  •   IInspectable    10 年前

    为了达到预期的结果,你必须设定一个标准 Progress Bar 的控件样式设置为 PBS_MARQUEE 。这可以通过对话框的资源脚本完成,也可以在运行时通过调用 SetWindowLongPtr .

    要启动和停止字幕动画并控制其速度,请发送 PBM_SETMARQUEE 向控件发送消息。

    使用此样式需要6.0版的通用控件。

    要使用Comctl32.dll版本6,请在清单中指定它。有关清单的详细信息,请参阅 Enabling Visual Styles .

    示例代码:

    LONG_PTR style = ::GetWindowLongPtrW( hWndPB, GWL_STYLE );
    style &= ~( PBS_SMOOTH | PBS_SMOOTHREVERSE | PBS_VERTICAL);  // Remove competing styles
    style |= PBS_MARQUEE;                                        // Add the marquee style
    ::SetWindowLongPtrW( hWndPB, GWL_STYLE, style );
    ::SendMessageW( hWndPB, PBM_SETMARQUEE, TRUE, 0 );
    

    注意:不能将字幕样式与垂直进度条控件一起使用。