社区
界面
帖子详情
图像重叠显示时的刷新闪动问题
bluemoona
2007-10-28 03:35:10
我编了一个多文档界面,以DIB形式打开图像并在文档里显示。但是当我打开两三幅图像后,这几幅图像交叉重叠着的时候,就会出现剧烈闪动现象,标题栏里不断闪烁着这几幅图像的名字,有时还会像死机一样!不知是为什么?
另外我想问的是,我见过别人在视类里添加了对话框界面和滚动条等资源,还给每个控件定义了控件变量。我试了几次都不能在我现有程序的视类里加上,他们是怎么加的呢?
...全文
375
14
打赏
收藏
图像重叠显示时的刷新闪动问题
我编了一个多文档界面,以DIB形式打开图像并在文档里显示。但是当我打开两三幅图像后,这几幅图像交叉重叠着的时候,就会出现剧烈闪动现象,标题栏里不断闪烁着这几幅图像的名字,有时还会像死机一样!不知是为什么? 另外我想问的是,我见过别人在视类里添加了对话框界面和滚动条等资源,还给每个控件定义了控件变量。我试了几次都不能在我现有程序的视类里加上,他们是怎么加的呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bluemoona
2007-11-05
打赏
举报
回复
我的问题解决了!我设了个标志变量只在打开图像时设置窗口大小,其他时候不管,闪动没有了。还是谢谢大家的参与,我很高兴问题终于解决了!
菜牛
2007-11-02
打赏
举报
回复
应该是你有些特别的代码,最好检查一下发些代码看看,或者发到我的信箱:Mackz@sina.com
bluemoona
2007-11-02
打赏
举报
回复
顺便说明一下,m_hDIB是我打开的图像文件的句柄。
bluemoona
2007-11-02
打赏
举报
回复
我检查了代码,你说的没错,的确是我写的问题。我为了让图像打开时文档就是图像的大小。所以在视类的OnDraw里加了下面一句来重置窗口大小。
GetParentFrame()->SetWindowPos(&wndTop, 0, 0, width, height, SWP_NOMOVE);
我想可能是我一拖动图像,多幅图像都一起刷新,也就是多幅图像都在重置和重画窗口!
但是我要限制图像显示窗口的大小又不会闪动该怎么办呢?呜呜,终于找到原因了,感动的不行!
我的代码如下:
void CMYView::OnDraw(CDC* pDC)
{
//显示等待光标
BeginWaitCursor();
//获取文档对象
CGeneralTestBenchDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//获取DIB
HDIB hDIB=pDoc->GetHDIB();
//判断DIB是否为空
if(hDIB!=NULL)
{
LPSTR lpDIB=(LPSTR)::GlobalLock((HGLOBAL)hDIB);
int cxDIB=(int)::DIBWidth(lpDIB);
int cyDIB=(int)::DIBHeight(lpDIB);
int width = 360;
int height = 140;
::GlobalUnlock((HGLOBAL)hDIB);
//定义DIB图像矩形区域
CRect rcDIB,ClientRect,WindowRect;
rcDIB.top=rcDIB.left=0;
rcDIB.right=cxDIB;
rcDIB.bottom=cyDIB;
GetParentFrame()->GetWindowRect(WindowRect);
GetClientRect(ClientRect);
//定义打印输出设备的图像矩形区域
CRect rcDest;
rcDest=rcDIB;
width=(WindowRect.Width() - ClientRect.Width() + cxDIB);
height=(WindowRect.Height() - ClientRect.Height() +cyDIB);
//就是这句代码,呜呜...困惑了我这么长时间
GetParentFrame()->SetWindowPos(&wndTop, 0, 0, width, height, SWP_NOMOVE);********
//输出DIB
::PaintDIB(pDC->m_hDC, &rcDest, pDoc->GetHDIB(),
&rcDIB, pDoc->GetDocPalette());
// pDC->BitBlt(rcDest.left,rcDest.top,cxDIB, cyDIB,&memDC, 0, 0, SRCCOPY );
}
//恢复正常光标
EndWaitCursor();
......
}
bluemoona
2007-11-01
打赏
举报
回复
我发现在主框架下显示多幅图像(即打开多个文档)时,当我拖动一幅图像(文档)从另一幅图像(文档)上面经过,就会出现两幅图像交替显示的现象(拖动时),如果有三幅图像重叠就有三幅图像交替闪动,看别人的程序也没发现有这种情况,不知是我什么地方有问题!
bluemoona
2007-11-01
打赏
举报
回复
的确是一个视图显示一幅图像,一个图像就是一个文档。
菜牛
2007-11-01
打赏
举报
回复
不明白你的意思,你是不是一个视图显示一幅图片?
bluemoona
2007-10-31
打赏
举报
回复
双缓冲的资料我也查过,不过多个视类对象同时显示,我在哪写他们的双缓冲代码呢!有点晕!希望你尽快尝试成功,我也借鉴借鉴!这个问题困扰我很久了,我现在只能忽视这一点写其他部分代码。不过总要解决的啊!
charleslove
2007-10-30
打赏
举报
回复
用双缓冲,具体的到网络上搜下就有.我也在尝试呢
WM_EARSEBKGND 返回TRUE,应该是和双缓冲搭配用吧
bluemoona
2007-10-30
打赏
举报
回复
用WM_EARSEBKGND 怎么返回TRUE啊,他不是有一个默认的返回语句吗?我试了不行!
bluemoona
2007-10-29
打赏
举报
回复
载入图象或移动图像时都应该刷新啊!我试着在PreCreateWindow里设置窗口的WS_CLIPSIBLINGS和WS_CLIPCHILDREN属性,也没效果。
不过,我发现当我拖动一幅图像从另外一幅图像上经过时,就会有两幅图像交替显示的现象,不知是我哪个参数没设置好?
关于那个视类里的资源,是我看到一个采集卡的例子,它把图像缓存和显示分别做成控件,在文档类里使用图像缓存控件,在视类里使用图像显示控件。而且它的程序*view.h里有如下段:
//AFX_DATA
enum{IDD=IDD_DOCUMENT_DLG};
CTATIC m_Message;
CScrollBar m_VScroll;
CScrollBar m_HScroll;
CDISPLAY m_Display;
....
//AFX_DATA
*view.cpp里有如下代码:
//AFX_DATA_MAP
DDX_CONTROL(pDX,IDC_MESSAGE,m_Message);
DDX_CONTROL(pDX,IDC_VSCROLLBAR,m_VScroll);
DDX_CONTROL(pDX,IDC_HSCROLLBAR,m_HScroll);
DDX_CONTROL(pDX,IDC_DISPLAY,m_Display1);
....
//AFX_DATA_MAP
其他我再找不出关于这个对话框资源的什么痕迹来,找到那个对话框资源,按右键选ClassWizard,也弹出是否生成新类的对话框。但在ClassWizard的视类里明显有这些资源和变量设置。所以,我很迷惑,他怎么把资源加到视类里的?
不知我说明白了吗,本人还是初涉VC领域,盼望大家的帮忙,不胜感激!
youyifang
2007-10-29
打赏
举报
回复
响应WM_EARSEBKGND 消息,返回true就可以了,我从书上看的,不知道对你的那个情况适不适用,试试看。
redleafe
2007-10-28
打赏
举报
回复
你是不是每次载入一幅图后都全部刷新视图?控制你的刷新区域,减少无用刷新,可能会好点。
视图类添加了添加了对话框界面和滚动条等资源?不是很明白,你是不是看到的是用类似于BCG的接面包生成的Dock窗口呀?
你查查BCG,应该会明白一些,至少会把问题描述的详细些才能解决。
css 中的定位详解
但是在练习中,这通常会导致延迟或
闪动
的页面
刷新
。如果针对的是早期版本的 IE,那么在决定采用固定定位解决方案之前,应该多多思考和测试。 内容摘自《CSS 与 Dreamweaver CS3 完美网页设计》
Yale free 雅乐简谱打谱软件
为了
刷新
效率考虑,所用前背景图片请 尽量小。 5、设置快捷键 ①点击菜单『设置->快捷键』; ②在弹出对话框里自定义快捷键。在当前版本,用户可以设置音符、音长和音高的快捷键; 附录A 术语表: 图元:音符...
从新手小白入门Qt编程(Windows 10)
Qt是由Qt Company开发的主流跨平台C++图形用户界面应用程序开发框架。 Qt是面向对象的框架、容易扩展,并且允许真正地组件编程,既可以开发GUI程序,也可用于控制台工具和服务器。 其跨平台集成开发环境Qt Creator ...
canvas 重绘
时
的
闪动
问题
canvas 重绘
时
的
闪动
问题
解决方案
RecyclerView局部
刷新
的坑
话说有图有真相,首先来对比一下局部
刷新
前后的效果: 优化之前的效果: 优化之后的效果: 可以看到,优化之后,...对分析的可能造成
闪动
的
问题
进行解决 验证是否解决 一、为什么会闪一下呢? 我们的需求是大
界面
15,978
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章