Win7和XP在Application->ProcessMessage处理上有啥不同?

ChinaOunce 2014-01-09 03:41:19
我编了一个绘图程序,在Win7下使用了Application->ProcessMessage函数后能正常Resize,但是在XP下运行结果就像没有使用Application->ProcessMessage一样,绘图不全。
难道Win7和XP在Application->ProcessMessage处理上是不一样的?
...全文
247 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaOunce 2014-01-15
  • 打赏
  • 举报
回复
我的绘图程序是在Form->Canvas上直接画(虽然是动画效果,但是不涉及擦除问题),resized后图画闪烁严重,在百度后将DoubleBuffer设置true,不闪了。后来加上Application->ProcessMessage,显示正确了(当然是在我的机器上),等我将程序发给同事使用时发现,在他们的机器上显示效果和加Application->ProgressMessage前一样,窗口尺寸变大后,多出来的地方没有画出来。他们的机器都是XP,所以我怀疑是Win7和XP的差别。按照start8588的说法,加上CreateParams后,问题依旧。好在问题不是很严重,将就用吧。
sololie 2014-01-14
  • 打赏
  • 举报
回复
俺记得是delphiguy说的嘛,那个帖子跟ProcessMessages没关系,是说VISTA\win7之后的UI绘图走的XX路线之类的,也可能记错,不过俺也只是瞄过一眼没太关注,记得是半年之内的帖子
ccrun.com 2014-01-14
  • 打赏
  • 举报
回复
。。。
sololie 2014-01-14
  • 打赏
  • 举报
回复
可能是俺记错发帖人或记错发帖板块了吧。。。不管它了 因为DX绘图时都是用peekmessage而非单纯getmessage,因为看过俺所谓的之前看到的那个帖子,所以无脑崩出了这么个想当然的感觉
  • 打赏
  • 举报
回复
“传统基于GDI绘制的程序也是如此”这是说传统基于GDI绘制的程序在vista、win7上运行时其窗口绘制也是使用DX加速的。
  • 打赏
  • 举报
回复
引用 11 楼 sololie 的回复:
俺记得是delphiguy说的嘛,那个帖子跟ProcessMessages没关系,是说VISTA\win7之后的UI绘图走的XX路线之类的,也可能记错,不过俺也只是瞄过一眼没太关注,记得是半年之内的帖子
我仔细搜了一遍,真的没有,我的印象是关于ProcessMessages在不同系统上的区别肯定没说过,VISTA\win7之后的UI绘图走的XX路线之类的也很可能没说过,不过不能绝对肯定。 VISTA\win7的UI是用DX硬件加速的,传统基于GDI绘制的程序也是如此。我估计每个窗口都被隐含分配了一个DD或者D3D表面,窗口绘制都绘制到这个surface上,然后统一更新到显示主表面。
  • 打赏
  • 举报
回复
引用 1 楼 sololie 的回复:
有不同,具体忘了,貌似记得delphiguy就在本版从前一个帖子里提到过区别 不过要规避区别,就统一用DX来绘图吧
那啥,我不记得说过这个东西...
ccrun.com 2014-01-12
  • 打赏
  • 举报
回复
引用 9 楼 DelphiGuy 的回复:
[quote=引用 1 楼 sololie 的回复:] 有不同,具体忘了,貌似记得delphiguy就在本版从前一个帖子里提到过区别 不过要规避区别,就统一用DX来绘图吧
那啥,我不记得说过这个东西... [/quote] 我就说嘛,ProcessMessages 的 .pas 源码我研究过,并未看到有明显的针对不同操作系统的分支处理。
星際訪客 2014-01-10
  • 打赏
  • 举报
回复
更正 : 樓主先試試以下兩個改善窗口顯示效能的方法 :
星際訪客 2014-01-10
  • 打赏
  • 举报
回复
樓主先試試以下兩個改善窗口顯示效能的兩個方法 : 1. 將 Form 之 DoubleBuffered 設為 True; 2.
void __fastcall TForm1::CreateParams(Controls::TCreateParams ¶ms)
{
	TForm::CreateParams(Params);
	Params.ExStyle |= WS_EX_LAYERED;
}
ccrun.com 2014-01-10
  • 打赏
  • 举报
回复
Application->ProcessMessages只是循环PeekMessage而已,和操作系统本身没有什么关系。
ChinaOunce 2014-01-09
  • 打赏
  • 举报
回复
我看看是不是计算机的速度问题, 我的机器飞快,测试的机器都比较慢。
sololie 2014-01-09
  • 打赏
  • 举报
回复
directx。。。。
ChinaOunce 2014-01-09
  • 打赏
  • 举报
回复
引用 1 楼 sololie 的回复:
有不同,具体忘了,貌似记得delphiguy就在本版从前一个帖子里提到过区别 不过要规避区别,就统一用DX来绘图吧
书我无知,DX是什么?
sololie 2014-01-09
  • 打赏
  • 举报
回复
搜不到我说的那个帖子了,却搜到这个 随便看看吧 http://bbs.csdn.net/topics/380207757
sololie 2014-01-09
  • 打赏
  • 举报
回复
有不同,具体忘了,貌似记得delphiguy就在本版从前一个帖子里提到过区别 不过要规避区别,就统一用DX来绘图吧

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧