社区
ATL
帖子详情
写了一个进度条但闪得厉害!!!
ji_hui
2002-03-29 01:06:44
关于控件的刷新,Microsoft是怎么做的,大家讨论讨论!
...全文
77
8
打赏
收藏
写了一个进度条但闪得厉害!!!
关于控件的刷新,Microsoft是怎么做的,大家讨论讨论!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ji_hui
2002-04-03
打赏
举报
回复
再等两天如果没人回答我就
给分了!
ji_hui
2002-04-02
打赏
举报
回复
写错了,应是“代码很少,而且我改了以后,现在却不显示了”
我是用VB6测试的,测试代码如下:
Private Sub Command1_Click()
Dim i As Long
Progress1.Min = 0
Progress1.Max = 10000
For i = 0 To 10000
Progress1.SetPos i
DoEvents
Next i
End Sub
其中若不加DOENENTS,循环很快完成,加上DOEVENTS后开始单步进行,但刷新很差,出现好多横条。
ji_hui
2002-04-02
打赏
举报
回复
代码很少,而且我改了以后,现在却一显示了。
我不知下面的代码问题出在哪,帮我看看。
示例代码如下:
HRESULT OnDraw(ATL_DRAWINFO& di)
{
char buf[10];
ZeroMemory(buf,10);
ltoa(lngPos,buf,10);
LPCTSTR pszText = buf;
long lngTemp;
long intLeft;
long intRight;
long intTop;
long intBottom;
long intWidth;
lngTemp=lngMax-lngMin;
if (lngTemp>0)
{
lngTemp=lngPos*100/lngTemp;
}
else
{
lngTemp=100;
}
COLORREF clrFore;
COLORREF clrBack;
COLORREF clrBar;
OleTranslateColor(colorFore,NULL,&clrFore);
OleTranslateColor(colorBack,NULL,&clrBack);
OleTranslateColor(colorBar,NULL,&clrBar);
RECT& rc = *(RECT*)di.prcBounds;
intLeft=rc.left ;
intRight=rc.right ;
intTop=rc.top ;
intBottom=rc.bottom ;
intWidth=(intRight-intLeft)*lngTemp/100;
RECT rcBar;
rcBar.left =intLeft;
rcBar.top =intTop;
rcBar.right =intWidth+intLeft;
rcBar.bottom =intBottom;
HDC hDC;
HBITMAP hBitmap;
HBITMAP hOldBitmap;
HBRUSH hBrush;
HBRUSH hBrushBar;
hDC=CreateCompatibleDC (di.hdcDraw );
hBitmap=CreateCompatibleBitmap (hDC ,rc.right -rc.left ,rc.bottom -rc.top );
hOldBitmap=(HBITMAP)SelectObject (hDC,hBitmap);
hBrush=CreateSolidBrush(clrBack);
hBrushBar=CreateSolidBrush(clrBar);
SetTextAlign(hDC, TA_LEFT|TA_TOP|TA_NOUPDATECP );
SetBkMode(hDC ,TRANSPARENT);
SetTextColor(hDC ,clrFore);
FillRect(hDC ,&rc,hBrush);
FillRect(hDC ,&rcBar,hBrushBar);
DrawEdge(hDC ,&rc,EDGE_SUNKEN,BF_RECT);
DrawTextEx(hDC ,(char*)pszText,lstrlen(pszText),&rc,DT_SINGLELINE|DT_VCENTER|DT_CENTER,NULL);
BitBlt (di.hdcDraw ,rc.left ,rc.top ,rc.right -rc.left ,rc.bottom -rc.top ,hDC,rc.left ,rc.top ,SRCCOPY);
SelectObject(hDC,hOldBitmap);
DeleteObject (hBitmap);
DeleteObject(hBrush);
DeleteObject(hBrushBar);
DeleteDC (hDC);
return S_OK;
}
LLnju
2002-04-01
打赏
举报
回复
是啊。你的具体应用环境是什么?在 memdc 中把图形全部画好后再 bitblt 到屏幕一般不会感觉到闪烁的啊。可能是你向内存中绘图的时间太长了吧,进度条应该不会有很繁重的重绘吧,应该不会闪烁的,用 DDraw 应该用不着的。
ji_hui
2002-04-01
打赏
举报
回复
我以前试过用MEMDC,最好只是一次 BitBlt,效果虽有改善,但也不是特别理想。
LLnju(LLnju) 兄,DDraw是不是DirectDraw?
BigBigFish
2002-04-01
打赏
举报
回复
同上,建内存DC,最好重载WM_ERASEBKGND,return TRUE
LLnju
2002-03-29
打赏
举报
回复
尽量在 memdc 中画图,最后一次真正的显示时最好只是一次 BitBlt, 在GDI函数中就这个速度还不错,如果你的要求实在很高,就用 DDraw。 我以前也做过一个,在 200 * 150 的区域上以 100 次/秒 的速度刷新也没有任何闪烁感。
gxh
2002-03-29
打赏
举报
回复
使用內存DC作畫.我作過類似的控件﹐應該沒有問題。
win10下office2013内excel onenote拖动滚动条闪屏
笔记本电脑,系统win10 64bit,office2013 32bit 64bit都有这种情况,excel onenote 下拖动滚动条,屏幕闪烁,拖动越快,
闪得
越
厉害
,屏幕上下分割成很多线条状解决办法文件-选项-高级-显示-禁用硬件图形加速 转载于:https://blog.51cto.com/xioli/1879513...
闪豆下载器:下载界的全能工具
我们在网上浏览到许多精彩的视频,无论是搞笑的抖音短视频、精彩的 B 站番剧,还是国家智慧教育平台的学习课程,都希望能够将它们保存下来。然而,很多平台并不支持直接下载,手动录屏又会导致画质模糊、操作繁琐。不过,别担心,闪豆下载器的出现,为我们解决了这些难题。
sqlserver 2008安装及错误解决方法
(此文为个人总结,详细的安装过程还请参考它文,但错误解决方法可以参考) 首先来一下安装简
写
点开setup.exe 后报兼容性错误的直接继续运行, 一开始选项里面选好是64位还是32位。 然后基本上就是下一步,遇到换目录的就不要换了,因为sqlserver 和vs几乎是无法卸载成功的,所以安装前备份电脑就可以了,之后恢复就可以了。 序列号: SQL Server 2008 序
卡通风格简洁热气球PPT模板免费下载
进入母版视图右键主母版 → 插入版式添加元素:- 左侧:SmartArt 时间轴- 中间:
进度条
(圆点连线)- 右侧:热气球上升路径(动画预设)命名为“KnowledgeMap”退出后,在普通视图中右键幻灯片 → 选择该版式从此以后,只要需要展示学习进程,直接套用这个版式,效率翻倍!回到最初的问题:
一个
好的PPT模板,到底应该是什么样子?它不该只是“好看”,而应该是:懂用户心理的帮内容说话的让操作省心的。
因滚动条出现与否而导致页面跳动的解决方案
内容少没有滚动条是全屏。但是内容多加上滚动条时,页面由没有滚动条到有滚动条就会跳动一下。解决是body{overflow:y;} 没有滚动条时旁边也有个窄边灰色不可用,溢出时正常。这样就不会跳了...
ATL
3,248
社区成员
48,531
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章