chenronting
发表于 2010-2-4 21:40:50
哇靠 。真是好想法啊。~太多牛人了。~仰望。。
qixinwb
发表于 2010-2-6 00:04:35
:face (29): 我也来发个我的作品:#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=..\17292.ICO\winxp\worldofaqua1\WorldOfAqua1\Aqua OS.ico
#AutoIt3Wrapper_outfile=调用游戏菜单.exe
#AutoIt3Wrapper_Res_Fileversion=0.0.0.0
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$g_szVersion = "调用游戏菜单"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)
Opt("GUIOnEventMode", 1); 切换为 OnEvent 模式
Dim $Dll,$SkincrafterDll="SkinCrafterDll.dll",$SkincrafterSkin="Thai_Style_ST.skf",$hanle=WinGetHandle("调用游戏菜单","")
$Dll = DllOpen($SkincrafterDll)
DllCall($Dll, "int:cdecl", "InitLicenKeys", "wstr", "1", "wstr", "", "wstr", "1@1.com", "wstr", "1")
DllCall($Dll, "int:cdecl", "InitDecoration", "int", 1)
DllCall($Dll, "int:cdecl", "LoadSkinFromFile", "wstr", $SkincrafterSkin)
DllCall($Dll, "int:cdecl", "DecorateAs", "int", $hanle, "int", 25)
DllCall($Dll, "int:cdecl", "ApplySkin")
$hwnd=GUICreate("调用游戏菜单",650,380,@DesktopWidth/2-500,@DesktopHeight/2-380)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int",500, "long", 0x00080000)
GUISetState()
GUICtrlCreateGroup("",3,3,647,377)
Dim $b = 1,$Label=GUICtrlCreateLabel("正在加载最新配置!请稍等。。。",120,240,300,40,$SS_CENTERIMAGE)
GUICtrlSetFont($Label,22,400,0,"华文行楷")
;run("\\Server\e\迅闪\游戏菜单\游戏菜单.exe","\\Server\e\迅闪\游戏菜单\")
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
While 1
Sleep(5)
if $b = 160 Then $b = 1
ControlMove ("调用游戏菜单","正在加载最新配置!请稍等。。。",$Label,120,240-$b,500, 40)
$b +=1
If WinActivate("齐心网吧游戏菜单","") Then quit()
WEnd
Func quit()
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050010);implode
GUISetState(@SW_HIDE)
DllCall($dll, "int:cdecl", "DeInitDecoration")
DllCall($dll, "int:cdecl", "RemoveSkin")
DllClose($dll)
Exit
EndFunc
bian123shao
发表于 2010-2-7 10:40:18
不错不错,学习了
qj395202409
发表于 2010-2-7 10:53:48
用 auto menu bulider
316428696
发表于 2010-2-8 12:46:44
不错,不错!
lxz
发表于 2010-2-8 17:50:30
不错不错,学习了.....
零度深蓝
发表于 2012-1-13 18:17:27
例子很好,收藏了{:face (293):}
sdycn2012
发表于 2017-7-3 08:08:43
本帖最后由 sdycn2012 于 2017-7-3 08:13 编辑
昨天有个人联系我做一个滚动代码,刚好看了15楼的代码,这是我改进的代码
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$formWidth = 300
$formHeight = 150
$form = GUICreate("滚动字幕",$formWidth,$formHeight)
$text = "滚动文字,时间2017年7月3日 07:10:16滚动文字,时间2017年7月3日 07:10:16"
$textLen = StringLen($text)
$textWidth = _regexp($text,0) * 6 + ($textLen - _regexp($text,0)) * 12
$textControl = GUICtrlCreateLabel($text,0,0)
GUISetState(@SW_SHOW)
_marquee()
#Region 滚动字幕 $x:初始x坐标,$step:滚动像素,$speed:速度
Func _marquee($x = 0,$step = 1,$speed = 100)
$x-=$step
GUICtrlSetPos($textControl,$x)
Sleep($speed)
If $x = -$textWidth Then $x = $formWidth
if GUIGetMsg() = $GUI_EVENT_CLOSE Then
Exit
Else
_marquee($x)
EndIf
EndFunc
#EndRegion
#Region 获取字符串指定字节长度,此部分修改自3mile的代码
Func _regexp($input,$flag=1);flag,0='单字节字符',1='简体中文',2='其它双字节字符'
local $single,$due,$other
If StringRegExp($input, '[^\x00-\xff]+', 0) Then
$temp = StringSplit($input, '')
For $i = 1 To $temp
If BinaryLen(StringToBinary($temp[$i])) = 2 Then
$high = BinaryMid(StringToBinary($temp[$i]), 1, 1)
$low = BinaryMid(StringToBinary($temp[$i]), 2, 1)
If $high >= 0xb0 And $high <= 0xf7 And $low >= 0xa1 And $low <= 0xfe Then
$due&=$temp[$i]
Else
$other&=$temp[$i]
EndIf
Elseif BinaryLen(StringToBinary($temp[$i])) =1 Then
$single&=$temp[$i]
EndIf
Next
select
case $flag=0
return StringLen($single)
case $flag=1
return StringLen($due)
case $flag=2
return StringLen($other)
EndSelect
EndIf
EndFunc ;==>_regexp
#EndRegion
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
sdycn2012
发表于 2017-7-3 08:23:07
回复 38# sdycn2012
由固定滚动文字宽度改成了自动获取文字的宽度,如果文字的字体大小不一样,可以单独设置一个文字的字号变量来获取滚动文字的总宽度