Win32防止屏幕闪烁

Win32-放大镜DEMO 放大镜Demo 主要问题: 1 鼠标捕获: 2 屏幕绘制闪烁 核心代码LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { TCHAR szBuffer[1024]; switch (message) { case WM_PAINT: { 阅读详情

在回调函数中处理WM_PAINT消息:

case WM_PAINT:


 PAINTSTRUCT ps;

//得到当前HDC
 HDC hdc = BeginPaint(&ps);
 

//创建内存HDC
 HDC memHDC = CreateCompatibleDC(hdc);

//获取客户区大小
 RECT rectClient;
 GetClientRect(&rectClient);

//创建位图
 HBITMAP bmpBuff = CreateCompatibleBitmap(hdc,RECT_WIDTH(rectClient),RECT_HEIGHT(rectClient));
 HBITMAP pOldBMP = (HBITMAP)SelectObject(memHDC, bmpBuff);

    // draw something
    DrawBackGround(memHDC);

//拷贝内存HDC内容到实际HDC
BOOL tt = BitBlt(hdc, rectClient.left, rectClient.top, RECT_WIDTH(rectClient),
     RECT_HEIGHT(rectClient), memHDC, rectClient.left, rectClient.top, SRCCOPY);

//内存回收
 SelectObject(memHDC, pOldBMP);
 DeleteObject(bmpBuff);
 DeleteDC(memHDC);

 


 EndPaint(&ps);

return 0;

为防止清除背景而造成的白屏可以在回调函数中截获WM_ERASEBKGND消息使其什么也不要做

case WM_ERASEBKGND:

//什么也不做,返回0使默认窗口回调不再处理这个消息

return 0;

win抓取屏幕弄成流数据&流数据展示 一. 概念1.设备dcDC实际上是GDI内部保存的数据结构。DC与特定的显示设备(如显示器或打印机)相关。 对于显示器,DC总是与显示器上的特定视窗相关。DC中的有些值是图形「属性」,这些属性定义了GDI绘图函数工作的细节。例如,对於TextOut,DC的属性确定了文字的颜色、文字的背景色、x座标和y座标映射到视窗的显示区域的方式,以及显示文字Windows使用的字体。 MSDN的解释:一个DC... 阅读详情

相关推荐

[Win32SDK基本] 窗口详解(超详细)(续)(补充)

上次( [Win32SDK基本] 窗口详解(超详细)地址:http://blog.csdn.net/zuishikonghuan/article/details/46378475)忘了写窗口操作函数和消息了-_-||现在补上啊 1。MoveWindow 函数原型: MSDN:https://msdn.microsoft.com/en-us/library/ms633534(v=vs.

zuishikonghuan的博客 6747

vc win32 win api 防止 屏幕保护 防止显示器自动关闭

自己写的,win32 win api, mfc,防止屏幕保护程序自动运行,防止显示器监视器自动关闭。 当然你可以在屏幕保护设,或者电源计划里面设间很长。但是我这个是用代码来阻止。

C++程序编程中的WM_PAINT、WM_ERASEBKGND、InvalidateRect、UpdateWindow、BeginPaint和EndPaint详解

Windows编程中的WM_PAINT、WM_ERASEBKGND、InvalidateRect、UpdateWindow、BeginPaint和EndPaint详解。

dvlinker的技术专栏 9180

WM_ERASEBKGND消息

参考文章:白乔原创:VC之美化界面篇 Windows在窗口的具体绘制之前,会发送WM_ERASEBKGND消息通知该窗口檫除背景。默认情况下,会以窗口的默认背景色清除窗口。 消息响应函数为:afx_msg BOOL OnEraseBkgnd(CDC* pDC)。 以下Demo为对话框加载了一副位图背景。 1、首先导入一副位图。 2、 BOOL CMy123Dlg::

Hisin Wang的专栏 7124

精通Win32 API编程-Windows图形界面编程

Windows的API(Application Programming Interface,应用程序编程接口),是Windows 操作系统提供给应用程序的大量函数,学习本课程,不仅可以掌握Windows界面编程,开发华丽的Windows桌面运用程序,也可以为MFC框架的学习奠定扎实的基础,同是否熟练的掌握Windows API开发,也是企业考量优秀程序员一个非常重要的指标!

wxPython之解决闪烁

解决闪烁  闪烁发生在重绘窗口导致用户界面可见的闪动。甚至简单的绘制程序,如果使用不当的话,都是导致闪烁。 幸运的是有一些方法来解决和最小化闪烁,这会提高程序界面的外观和感觉。1、避免不必要的背景擦除   发生闪烁,首先尝试避免不必要的擦除。通过绑定一个空的事件处理器给EVT_ERASE_BACKGROUND事件来实现。绑定一个空事件处理器阻止系统擦除背景,当在OnPaint 中再次绘制,将

阿兵-AI医疗的专栏 4612

python调用win系统命令_Python:如何执行系统命令(四种方法)

一、os.system方法在子终端运行系统命令,可以获取命令执行后的返回信息以及执行返回的状态。执行后返回两行结果,第一行是结果, 第二行是执行状态信息,如果命令成功执行,这条语句返回0,否则返回1。importosprint(os.system('date'))由于python3默认采用了UTF-8编码,而WIN8的CMD窗口采用的是GBK编码,导致了编码不同。但是,如果简单的通过encode...

weixin_35374026的博客 3537

win32文字显示和刷新

防止屏幕闪烁,可以使用内存贴图和InValidateRect()两种方法图形为什么会闪烁的原因是:我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示是由OnPaint进行调用的。当窗口由于任何原因需要重绘,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这样在短间内背景色与显示图形的交替出现,使得显示窗口看起来

Pine的专栏 4051

Win32中调用InvalidateRect屏幕闪烁的解决方法

//防止界面闪烁 case WM_ERASEBKGND: return TRUE; 重载WM_ERASEBKGND消息函数,返回TRUE就解决了整个图片闪烁的问题,前提是InvalidateRect第二个参数指定刷新区域不是整个背景 ...

hu421160052的博客 2002

Win32关于调整窗口大小窗口闪烁问题及解决办法

先来谈谈闪烁产生的原因 : 原因一: 如果熟悉显卡原理的话,调用GDI函数向屏幕输出的候并不是立刻就显示在屏幕 上只是写到了显存里,而显卡每隔一段间把显存的内容输出到屏幕上,这就是刷新周期。 一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设的。 这样问题就来了,一般画图都是先画背景色,然后再把内容画上去,如果这两次操作不在同一个 刷新周期内完成,那么给人的视觉感受就是,...

lzzw的学习之路 5254

经验总结之防止窗口闪烁的方法

也许我们都碰到过这种情况,当你想重画某个窗口候,或你需要每隔一段间要进行重画窗口窗口会不停的闪烁。那么如何消除闪烁呢?借鉴了别人的经验,自己也总结一下,现将总结的几种方法介绍一下,供大家参考。  1、将Invalidate()替换为InvalidateRect()。   因为Invalidate()会导致整个窗口的图象重画,需要的间比较长,而InvalidateRec

zqf_office的专栏 1234

python实现好玩的特效(使用win32库)

enjoy~

qq_60571832的博客 187

Win32下双缓冲绘图技术

一:双缓冲原理   为了解决窗口刷新频率过快所带来的闪烁问题,利用双缓冲技术进行绘图。所谓双缓冲技术,就是将资源加载到内存,然后复制内存数据到设备DC(这个比较快),避免了直接在设备DC上绘图(这个比较慢)。打个简单的比方:有个画家在街边办了一个即画展,在同一块画布上根据观众的要求画不同的图像,每当有一位观众制定要看什么画,画家先把之前画布上的东西全部擦干净,再重新绘画。显然有一些...

banfu7150的博客 375

WM_PAINT与WM_ERASEBKGND补充

本文最新链接地址:http://lifepeak.net/it-jishu/wm_paint-wm_erasebkgnd.html 在做窗口界面优化的候,正确的处理WM_PAINT和WM_ERASEBKGND是很重要的,不管是先产生WM_ERASEBKGND还是WM_PAINT.在处理OnPaint采用如下方法:PAINTSTRUCT PS;HDC hdc = BeginPaint(&

World7th的专栏 4994

窗口SetWindowPos()的用法

SetWindowPos()        函数功能:该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口的级别最高,并且被设为Z序的第一个窗口。        函数原型:BOOL SetWindowPos(HWN hWnd,HWND hWndlnsertAfter,int X,int Y,int cx,in

熊小屁的专栏 2万+

WM_ERASEBKGND消息及位图背景与透明的实现

 2009-06-05 10:27:17|  分类: VC/MFC/C++ |  标签: |举报 |字号大中小 订阅 点击打开链接 一、添加WM_ERASEBKGND消息 1、对话框类的OnEraseBkgnd a、首先,为了下面使用擦除背景的方便,先增加OnEraseBkgnd函数(WM_ERASEBKGND ),但好多新手都不知道对话框在那里找增

h_h_w的专栏 2006
上一篇: Platform Builder不需要重启Simulator动态调试程序
下一篇: Win32基本概念
nicephil
博客等级 码龄20年 5粉丝 22原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值