在mfc中绘制CSliderCtrl的通道

时间:2013-10-16 02:49:46

标签: mfc

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

1 个答案:

答案 0 :(得分:1)

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

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

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

当你收到一个块时,你会相应地增加nBytes。

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

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

m_myslider.Invalidate();
相关问题