社区
ATL
帖子详情
写了一个进度条但闪得厉害!!!
ji_hui
2002-03-29 01:06:44
关于控件的刷新,Microsoft是怎么做的,大家讨论讨论!
...全文
66
8
打赏
收藏
写了一个进度条但闪得厉害!!!
关于控件的刷新,Microsoft是怎么做的,大家讨论讨论!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 下拖动滚动条,屏幕闪烁,拖动越快,
闪得
越
厉害
,屏幕上下分割成很多线条状解决办法文件-选项-高级-显示-禁用硬件图形加速 ...
因滚动条出现与否而导致页面跳动的解决方案
内容少没有滚动条是全屏。但是内容多加上滚动条时,页面由没有滚动条到有滚动条就会跳动一下。解决是body{overflow:y;} 没有滚动条时旁边也有个窄边灰色不可用,溢出时正常。这样就不会跳了...
写
给初学者的Jetpack Compose教程,动画
其实我并不是很擅长
写
动画相关的内容,《第一行代码》整本书里面我都没有
写
过任何讲解动画的知识。当然书本静态纸张不容易表达动画的效果可能也是我没有
写
动画的原因之一。上面这3篇文章讲的都是基于Android View...
python创建
一个
模块文件、互换两个数的值_python之路——基础篇(2)模块
模块:os、sys、time、logging、json/pickle、hashlib、random、re模块分为三种:自定义模块第三方模块内置模块自定义模块1、定义模块将一系列功能函数或常量封装为
一个
独立的.py或多个.py文件。2、导入模块1 import...
TowardsDataScience 博客中文翻译 2021(一百二十一)
第
一个
例子是
一个
相当著名的时间序列:航空乘客数据集。这些数据来源广泛,其中
一个
来源来自Kaggle或Github。既然是最新的,那就来看看吧!简而言之,顾名思义,自动页面刷新功能可以让您设置报告中特定页面的计划...
ATL
3,248
社区成员
48,529
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章