找回密码
 加入
搜索
查看: 2212|回复: 11

透明GUI窗口内的 GUICtrlCreateEdit 内容过多导致假死机

  [复制链接]
发表于 2009-11-23 21:20:31 | 显示全部楼层 |阅读模式
本帖最后由 病毒专收员 于 2009-11-24 13:52 编辑

大家试下代码就知道怎么回事了,还望写透明窗口的大侠赐解!  WinXPsp3系统下出错,其他系统未测试.
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 426, 280, 192, 114, $WS_POPUP, $WS_EX_LAYERED)
GUISetBkColor(0x010101)
_API_SetLayeredWindowAttributes($Form1, 0x010101)
$Edit1 = GUICtrlCreateEdit("", 16, 16, 385, 193)
GUICtrlSetData(-1, "Edit1")
$Button1 = GUICtrlCreateButton("点我", 320, 232, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "滚动下滚动条多点几下就会卡",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "滚动下滚动条多点几下就会卡",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "滚动下滚动条多点几下就会卡",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "滚动下滚动条多点几下就会卡",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "滚动下滚动条多点几下就会卡",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "滚动下滚动条多点几下就会卡",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
                        GUICtrlSetData($Edit1, @CRLF,1)
                        GUICtrlSetData($Edit1, "点这里点这里点这里",1)
        EndSwitch
WEnd




Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False)

        Local Const $AC_SRC_ALPHA = 1
        Local Const $ULW_ALPHA = 2
        Local Const $LWA_ALPHA = 0x2
        Local Const $LWA_COLORKEY = 0x1
        If Not $isColorRef Then
                $i_transcolor = Hex(String($i_transcolor), 6)
                $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
        EndIf
        Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA)
        Select
                Case @error
                        Return SetError(@error, 0, 0)
                Case $Ret[0] = 0
                        Return SetError(4, 0, 0)
                Case Else
                        Return 1
        EndSelect
EndFunc   ;==>_API_SetLayeredWindowAttributes
发表于 2009-11-23 22:27:57 | 显示全部楼层
点了很多次 [点我] 没事
 楼主| 发表于 2009-11-23 22:31:33 | 显示全部楼层
滚动下滚动条多点几下就会卡 多点下 Edit编辑框内的内容或者滚动条什么的.
我试过 5 台电脑,问题都存在!
发表于 2009-11-23 22:50:24 | 显示全部楼层
的确如此~ 等了半天才缓过神来……
 楼主| 发表于 2009-11-23 22:55:22 | 显示全部楼层
前辈们都来看下哇!
发表于 2009-11-24 01:31:41 | 显示全部楼层
WIN7下测试正常,没发现问题。
 楼主| 发表于 2009-11-24 09:22:57 | 显示全部楼层
郁闷啊,忘记说明操作平台了.!  XPSP3平台下出的错.其他系统没测试过.
发表于 2009-11-24 09:25:06 | 显示全部楼层
估计是与处理方式有关,要象小孩子那样弄才会出现那样的问题
 楼主| 发表于 2009-11-24 10:21:04 | 显示全部楼层
与小孩无关,与问题有染..
继续等待~`
发表于 2009-11-24 11:53:24 | 显示全部楼层
继续等着看结果!~
 楼主| 发表于 2009-11-24 13:48:31 | 显示全部楼层
快来人帮忙解决下呀.
发表于 2010-2-1 19:56:19 | 显示全部楼层
的确如此~ 等了半天才缓过神来……
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-22 13:37 , Processed in 0.098405 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表