zmj2008
发表于 2010-3-13 17:37:39
不是把这么好呵呵
58fly
发表于 2010-3-13 17:37:53
内置MsgBox函数实际是调用了User32.dll中的MessageBoxW函数,这个API的原型中没有哪个参数是指定坐标用的。 ...
pusofalse 发表于 2010-3-13 00:48 http://www.autoitx.com/images/common/back.gif
P大,你这几天干嘛去拉?我还在等你修正版的SetupApi.au3呀!!
lchl0588
发表于 2010-3-13 21:07:37
回复 14# gapkiller
我的理解:当鼠标指针经过message 窗口时,第二个窗口会在中间貌似是激活作用!
pusofalse
发表于 2010-3-15 13:20:08
回复 14# gapkiller
因为可能会注册多个计时器,每个计时器管司不同的功能,而它们的回调函数地址可能都是一样的,IdEvent的作用就是一个计时器标识,用来区分多个计时器;如果一个计时器对应一个回调函数,那么除了可以传递到KillTimer销毁外,IdEvent将没有多大意义。
IdEvent的值取决于SetTimer函数,如果SetTimer函数执行失败,回调函数将不会被调用;如果成功,再看SetTimer的第一个参数hWnd(计时器关联到的窗口句柄),如果此参数为NULL,SetTimer将返回一个计时器标识,也就是IdEvent的值;如果设为一个有效的窗口句柄,那么函数返回非零,计时器标识采用SetTimer函数的第2个参数IDEvent的值。
在13#的例子中,SetTimer的hWnd参数为0,说明TimerDll是一个有效的Timer标识。
回调函数中,每个参数的含义如下:
$hwnd - 发生计时器事件的窗口句柄,同SetTimer hWnd参数。
$uiMsg - $WM_TIMER
$idEvent - 计时器标识。
$dwTime - 系统自启动后所运行的时间,单位ms。
参考:SetTimer
anna
发表于 2010-3-18 10:28:20
是不是message box 里的函数, 可以., 就象程序函数,从而画出坐标.hahaha
shit.:face (18)::face (2):
visualc
发表于 2010-3-18 11:39:34
回复 19# pusofalse
能否用先激活msg,在用按下鼠标的窗口Mdown函数,,将窗口托到指定的坐标呢,?
guojie885
发表于 2010-3-19 15:01:08
sdfasdfsdgfsdhgsfdhgsdfgsdf
lanfengc
发表于 2010-3-19 17:14:09
以上代码无法直接运行。须修改。
如下:#include <GUIConstantsEx.au3>
$Guititle="12333"
Global $__title,$__text,$__x, $__y
Global $Timer
Global $TimerDLL
$Form1 = GUICreate($Guititle, 220, 100, 80, 100)
$Button1 = GUICtrlCreateButton('test', 150, 35, 60, 20)
GUISetState()
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $Button1
MsgboxM(0, 'test', '我将跟随主窗口~')
MsgboxM(0, 'test', '我将定位到500,200的位置', 500, 200)
EndSwitch
WEnd
Func MsgboxM($flag, $title, $text, $x = '', $y = '')
$__title = $title
$__text = $text
$__x = $x
$__y = $y
$Timer = DllCallbackRegister('Timer', 'int', 'hwnd;uint;uint;dword')
$TimerDLL = DllCall('user32.dll', 'uint', 'SetTimer', 'hwnd', 0, 'uint', _
0, 'int', 1, 'ptr', DllCallbackGetPtr($Timer))
Sleep(3)
MsgBox($flag, $title, $text)
EndFunc ;==>MsgboxM
Func Timer($hwnd, $uiMsg, $idEvent, $dwTime)
If $idEvent = $TimerDLL Then
$Wpos = WinGetPos($Guititle)
Local $x = $Wpos + 60, $y = $Wpos + 10
If StringIsDigit($__x) And StringIsDigit($__y) Then Local $x = $__x, $y = $__y
If WinMove($__title, $__text, $x, $y) <> 0 Then
DllClose($TimerDLL)
DllCallbackFree($Timer)
EndIf
EndIf
EndFunc ;==>Timer
afan
发表于 2010-3-19 17:36:04
以上代码无法直接运行。须修改。
如下:
lanfengc 发表于 2010-3-19 17:14 http://www.autoitx.com/images/common/back.gif
怎么就你有这问题……
lanfengc
发表于 2010-3-19 17:42:25
回复 24# afan
你不加载这个库文件怎么创建GUI?#include <GUIConstantsEx.au3>
还有,, 全局变量在子程序内定义, 编译器提示错误。。我也没办法。 只好程序运行的时候定义了一个。
afan
发表于 2010-3-19 17:49:07
回复 25# lanfengc
具体哪个参数需要GUIConstantsEx.au3?
如果你是在scite里面运行提示变量的错误可不必理会,那是它的Bug。
你直接运行au3文件或编译后运行都试试~
lanfengc
发表于 2010-3-19 17:53:16
:face (3):回复 26# afan
还可以这样! 。汗一个。
afan
发表于 2010-3-19 17:57:28
回复 27# lanfengc
脚本程序最终应该是能够编译后运行。
你在编辑器里运行无错误提示,编译却有问题,或者
你在编辑器里运行有错误提示,编译却无问题,你怎样选择?:face (32):
menfan
发表于 2010-3-20 11:35:37
呵呵我这里正常哦
rikthhpgf2005
发表于 2010-4-5 15:57:36
学到了.....................:face (23):