0

我想使用 CSliderCtrl 实现一个视频播放器,它显示播放和下载进度。拇指随着视频的播放而移动,而频道随着视频文件的下载而改变。我参考了这篇文章1,但只能在事件处理程序中绘制通道,但是,我想在收到大量文件时绘制通道。所以我想知道如何在运行时而不是在处理程序中检索通道。 影响

4

1 回答 1

1

与其他自绘控件一样,您需要在自定义绘制偶数处理程序上绘制所有内容。Codeproject 上的这个自定义类也不例外。

为了适应这一点,您需要在父窗口中创建一个成员变量,该变量将保存已下载块的大小以及文件的大小。例如

class CMyDialog: CDialog
{
private:
   int nBytes; // downloaded bytes
   int nSize;  // total size of the file
}

当您收到一个块时,您将相应地增加 nBytes。

在滑块控件的自定义绘制处理程序中,您将使用这些变量来偏移通道位置。基本上,正如文章作者建议的那样,您只需绘制矩形。作者使用了一个矩形,您将使用两个(左右矩形)用不同的画笔绘制

实际的技巧是在每次收到块时强制滑块重绘。您需要使用Invalidate

m_myslider.Invalidate();
于 2013-10-17T01:35:43.617 回答