C ++ Builder / Winapi不同的加载/进度条类型

时间:2016-01-31 19:09:20

标签: c++ winapi c++builder

如何创建如下所示的“加载”ProgressBar?我甚至不知道如何谷歌。我正在寻找一种来回移动的漂浮绿色条:

image

不是像这样的标准ProgressBar:

image

1 个答案:

答案 0 :(得分:3)

要获得所需的结果,您必须将标准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 );

注意:您不能将选取框样式与垂直进度条控件一起使用。