【发布时间】:2015-10-13 17:28:44
【问题描述】:
我有一个所有者绘制的列表框,我想在其中绘制一些进度的动画。我相信一张我到目前为止所拥有的照片会说明很多:
每个文件在拖放到 DRAG HERE 区域时都会添加到列表框中,这里会创建一个新线程并启动加密/解密过程。 enc/dec 过程将进度值(以百分比为单位)保存到给定的变量中,即完成了多少工作。
随着进度的增加,我正在重新绘制列表框。
if(progress - prevProgress > 1.0)
{
InvalidateRect(Listbox, &ListboxProgressRect, TRUE);
UpdateWindow(Listbox);
prevProgress = progress;
}
问题在于即使只需要重绘一项,也会重绘每一项。ListboxProgressRect 区域实际上包括列表框最右边的 40 像素乘以列表框高度。
我想用子类 Ctrl 完全在 WM_PAINT 中处理绘图,但我不知道如何绘制项目和滚动条功能。 进度条旁边的编辑框和按钮也不错。
我应该继承列表框并处理所有绘图吗?如果是这样,我该如何绘制滚动条(并使其工作)?
【问题讨论】:
标签: c++ winapi listbox ownerdrawn