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):
页: 1 [2] 3
查看完整版本: 如何指定message box的坐标