[已解决]如何在用RedrawWindow刷新时不让桌面图标闪动
本帖最后由 xyold1 于 2010-8-23 17:16 编辑下面是帮助里的一段代码,用于显示一个十字,再刷新屏幕,除去显示
我稍修改了一下,循环显示
我的问题是如何在刷新时不让桌面图标闪动,因为我见为别的程序刷新时很“安静”
#Include <WinAPI.au3>
_WinAPI_RedrawWindow($hWnd [, $tRect = 0 [, $hRegion = 0 [, $iFlags = 5]]])
是不是修改 $iFlags的值?
请求帮助!#include <WindowsConstants.au3>
#include <WinAPI.au3>
While 1
ShowCross(@DesktopWidth / 2, @DesktopHeight / 2, 20, 2, 0xFF, 3000)
WEnd
Func ShowCross($start_x, $start_y, $length, $width, $color, $time)
Local $hDC, $hPen, $obj_orig
$hDC = _WinAPI_GetWindowDC(0) ; DC of entire screen (desktop)
$hPen = _WinAPI_CreatePen($PS_SOLID, $width, $color)
$obj_orig = _WinAPI_SelectObject($hDC, $hPen)
_WinAPI_DrawLine($hDC, $start_x - $length, $start_y, $start_x - 5, $start_y) ; horizontal left
_WinAPI_DrawLine($hDC, $start_x + $length, $start_y, $start_x + 5, $start_y) ; horizontal right
_WinAPI_DrawLine($hDC, $start_x, $start_y - $length, $start_x, $start_y - 5) ; vertical up
; _WinAPI_DrawLine($hDC, $start_x, $start_y + $length, $start_x, $start_y + 5) ; vertical down
_WinAPI_MoveTo($hDC, $start_x, $start_y + $length)
_WinAPI_LineTo($hDC, $start_x, $start_y + 5)
Sleep($time) ; show cross over screen for defined seconds
; refresh desktop (clear cross)
_WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN)
; clear resources
_WinAPI_SelectObject($hDC, $obj_orig)
_WinAPI_DeleteObject($hPen)
_WinAPI_ReleaseDC(0, $hDC)
EndFunc ;==>ShowCross 刷新肯定要闪的,除非不刷新,找别的办法 清除所画的图形,除了刷新,还有别的方法吗 画在透明的窗体上呢? 回复 4# rolaka
这个图形是画在屏幕上的
就是不知怎么清除
刷新可以,但会使桌面图标一闪,像按了F5似的
在DOS里一个clear就清屏了,这个怎么弄啊? 画在透明gui上,清除时直接GuiDelete就行了 回复 6# afan
透明GUI还要做鼠标穿透{:face (207):}
算了,还是用这个代码吧,闪就闪吧{:face (370):} 回复afan
透明GUI还要做鼠标穿透
算了,还是用这个代码吧,闪就闪吧{:face ( ...
xyold1 发表于 2010-8-22 17:12 http://www.autoitx.com/images/common/back.gif
都有现成的东西...一搜就搜到了 学习了..... 回复 8# rolaka
搜了一下,也试着做了一下,看着那长长的代码就感觉其效率不咋地
创建窗体,设置透明,再设鼠标穿透,再画图,最后删除窗体,远不如真接在屏幕上画图来得快 本帖最后由 afan 于 2010-8-22 21:52 编辑
回复 10# xyold1
透明就不用穿透了吧… 你有何应用哦,举实例说明会更好
有时候代码虽长,但耗时1毫秒都不到,看怎么优化了。但优化不一定就是短代码,优化的是效率 回复 11# afan
仿一个迷你背单词的程序写的,用特大号的字在屏幕上显示当前朗读的内容
它是画在屏幕上的,切换很静,而我做不来
用透明窗口试过了,刷新窗口不能更新显示的文字
而Guidelete后,我的电脑桌面也会闪,虽然加了鼠标穿透,但是在切换显示时,弹出的鼠标右键菜单会消失
我还是用原来的办法吧 回复 12# xyold1
什么软件,不大的话我下个看看 回复 13# afan
主程序也不大866K,就是压缩包里加了一个TTS引擎,使得压缩包为8M多
多特有下载
http://www.duote.com/soft/2679.html 回复 14# xyold1
弄了半天,才调出那个所谓的大字…… 真晕
看了下。它的确是直接画在屏幕上的(而且只画在指定的区域),要达到这样的效果也很简单。
直接在_WinAPI_RedrawWindow()中设置第二个参数即可
页:
[1]
2