随笔分类 -  Delphi-消息WM_PAINT

摘要:CSDN的Blog开通了。我想这里的Blog作为今后自己回答别人问题的时候,收藏答案的地方很不错呢。 因为社区的贴子早晚都会沉下去,查找起来很不方便,甚至再也找不到呢。 Q: http://community.csdn.net/Expert/TopicView.asp?id=3106090 言归正传 阅读全文
posted @ 2018-04-18 20:05 findumars 阅读(1701) 评论(0) 推荐(0) 编辑
摘要:核心思想:由于Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景。通过TImage组件也可以实现,但是重写WM_ERASEBKGND消息的效率更高一些,所以还是推荐使用这种方法。(2)声明重绘背景消息响应函数 阅读全文
posted @ 2018-02-14 01:48 findumars 阅读(777) 评论(0) 推荐(0) 编辑
摘要:Application.ProcessMessages;LockWindowUpdate(Self.Handle); //锁住当前窗口 LockWindowUpdate(0)//解除锁定窗口 LockWindowUpdate不但闪烁,而且有可能引起桌面闪烁。因为LockWindowUpdate并不忽 阅读全文
posted @ 2017-12-14 18:00 findumars 阅读(1961) 评论(0) 推荐(0) 编辑
摘要:https://msdn.microsoft.com/en-us/library/dd162759(v=vs.85).aspx Painting and Drawing This overview describes how the system manages output to the scre 阅读全文
posted @ 2017-08-26 07:39 findumars 阅读(251) 评论(0) 推荐(0) 编辑
摘要:做windows开发这么久了,一直以来对WM_PAINT和WM_ERASEBKGND消息总是感觉理解的不准确,每次要自绘一个窗口都因为知其然不知其所以然,偶然发现一篇文章,详细透彻地分了这个两个消息的用途和设计初衷,这篇文章也是我见过最深入也是最准确关于WM_PAINT和WM_ERASEBKGND消 阅读全文
posted @ 2017-07-06 21:28 findumars 阅读(863) 评论(0) 推荐(0) 编辑
摘要:Application.ProcessMessages;LockWindowUpdate(Self.Handle); //锁住当前窗口 LockWindowUpdate(0)//解除锁定窗口 LockWindowUpdate不但闪烁,而且有可能引起桌面闪烁。因为LockWindowUpdate并不忽 阅读全文
posted @ 2017-02-27 21:00 findumars 阅读(977) 评论(0) 推荐(0) 编辑
摘要://锁住listview防止反复刷新 LockWindowUpdate(Self.lvsearch.Handle); 貌似不太行,多用几下就卡住了 那个函数几乎不用的!单次添加,重复率高用这个意思意思还行 https://msdn.microsoft.com/en-us/library/window 阅读全文
posted @ 2017-02-15 21:51 findumars 阅读(334) 评论(0) 推荐(0) 编辑
摘要:fmx 和 vcl 不一样, fmx 的阴影可以通过2D显示出来。 VCL 无标题栏窗口的阴影很麻烦 280425268 我也是用两个窗口做阴影,并重绘了非客户区,不过阴影是基础自TwinControl,没继承TFrom。用spy探测office 2013,发现他也是用了2个句柄window,off 阅读全文
posted @ 2017-01-19 16:40 findumars 阅读(1221) 评论(0) 推荐(0) 编辑
摘要:LayeredWindow提供两种模式: 1.使用SetLayeredWindowAttributes去设置透明度, 完成窗口的统一透明,此时窗口仍然收到PAINT消息, 其他应用跟普通窗口一样. 2.使用UpdateLayeredWindow方法, 向系统提交包含bitmap的DC, 交由系统统一 阅读全文
posted @ 2017-01-11 00:40 findumars 阅读(3170) 评论(0) 推荐(0) 编辑
摘要:Windows中的窗口在特定情况下会由系统进行重绘,如无效区域重新显现时,,会向窗口的处理过程发送VM_PAINT消息,但是,可能还有Windows自己的更新窗口处理,如在下面的代码中,将击键显式地转换为VM_PAINT消息,让窗口过程处理,但是运行的结果却是,击键后窗口没有马上重绘(显示字体没有改 阅读全文
posted @ 2016-12-08 00:18 findumars 阅读(410) 评论(0) 推荐(0) 编辑
摘要:http://www.codeproject.com/Articles/16362/Bring-your-frame-window-a-shadow http://www.codeproject.com/Articles/19213/An-Alpha-Channel-Composited-Windo 阅读全文
posted @ 2016-08-27 04:01 findumars 阅读(336) 评论(0) 推荐(0) 编辑
摘要:http://hantayi.blog.51cto.com/1100843/383578 引言 当我们需要在用户区显示一些图形时,先把图形在客户区画上,虽然已经画好但此时我们还无法看到,还要通过 程序主动地刷新用户区,强制Windows发送一条WM_PAINT消息,这将引发视类OnDraw函数简单地 阅读全文
posted @ 2016-08-26 18:43 findumars 阅读(871) 评论(0) 推荐(0) 编辑
摘要:http://hi.baidu.com/3582077/item/77d3c1ff60f9fa5ec9f33754 调用API函数,在窗口非客户区绘图 GDI+的Graphics类里有个FromHdc函数,这个函数可以根据窗口设备上下文(DC)创建Graphics对象,在vc++中,窗口客户区与非客 阅读全文
posted @ 2016-08-26 18:13 findumars 阅读(6376) 评论(1) 推荐(0) 编辑
摘要:MSDN如是说:The LockWindowUpdate function disables or enables drawing in the specified window. Only one window can be locked at a time. BOOL LockWindowUpd 阅读全文
posted @ 2016-08-26 17:53 findumars 阅读(1124) 评论(0) 推荐(0) 编辑
摘要:以前在写过一个截图小工具<<共享个人写的一个截屏小工具>>, 它的主要原理是保存一幅桌面截图,再把截图画的一个全屏的窗口上, 然后我们在该全屏窗口上进行标注和绘画, 这样从效果上看起来就像我们是直接在桌面上进行截屏和绘画一样了。这种方式实际上也是QQ截屏的方式。 但是不知道你有没有发现,这种方式的截 阅读全文
posted @ 2016-08-12 17:11 findumars 阅读(975) 评论(0) 推荐(0) 编辑
摘要:处理一下窗口的WM_ERASEBKGND消息即可。 在messagemap里添加ON_WM_ERASEBKGND() 在窗口头文件里添加 afx_msg BOOL OnEraseBkgnd(CDC* pDC); 在窗口类里实现消息处理——简单返回true就可以了。 BOOL BmpDialog::O 阅读全文
posted @ 2016-07-03 05:18 findumars 阅读(710) 评论(0) 推荐(0) 编辑
摘要:使用Invalidate(TRUE)函数时,它会向消息队列中添加了WM_ERASEBKGND和WM_PAINT两个消息。 使用Invalidate(FALSE)函数时,它只会向消息队列中添加了WM_PAINT消息。 WM_ERASEBKGND消息的作用以背景色填充客户区,因此他会将之前绘制的图像情况 阅读全文
posted @ 2016-07-03 05:16 findumars 阅读(1200) 评论(0) 推荐(1) 编辑
摘要:透明窗口(窗口上面文字图片等内容不透明)的实现 本文讨论通过SetLayeredWindowAttributes来实现本文的目的。 SetLayeredWindowAttributes的实现必须将窗口设置为WS_EX_LAYERED的扩展风格。 然而,只有WS_POPUP窗口才能设置WS_EX_LA 阅读全文
posted @ 2016-06-28 22:11 findumars 阅读(3391) 评论(0) 推荐(1) 编辑
摘要:WS_CLIPCHILDREN,使得父窗体在绘制时留出其上的子窗体的位置不去画它,而那片区域留着子窗体去画。WS_CLIPSIBLINGS,必须用于子窗体,使得该子窗体在收到WM_PAINT时同时令其共父的诸多子窗体(MSDN讲必须不在该区域,即不与之重叠)也会被PAINT。//下面也是对WS_CL 阅读全文
posted @ 2016-06-02 05:51 findumars 阅读(774) 评论(0) 推荐(0) 编辑
摘要:之前有学MFC的同学告诉我觉得Windows的控件重绘难以理解,就算重绘成功了还是有些地方不明白,我觉得可能很多人都有这样的问题,在这里我从Windows窗体的最基本原理来讲解,如果你有类似的疑惑希望这篇文章可以帮你解惑。 1.Windows窗体原理 首先,如果看过Win32 SDK编程的都知道Wi 阅读全文
posted @ 2016-05-23 03:45 findumars 阅读(3353) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示