| |
|
|
- Página 1 - |
|
Timotheus | ¡Hola,
Yo habe una Problema. Yo möchte a una cierta Punto en el Programa Ventana una EditBox redactar. El y-Koordinate se por el Mausklick ausgewählt, y el x-K. es 0. In dieser Editar-Box kann aber ya una Texto posición. Deshalb muss Yo, el Mausklick todavía una vez wiederholen, sobald Edit producido wurde. Dadurch setzt se el Cursor en el Editar genau en el richtige Punto, como en un Multiedit. Como mache Yo el ?
Timo |
|
|
| |
|
|
|
| |
|
- Página 1 - |
|
Michael Dell | Sorry, kleiner Irrtum!
Versuchs veces hiermit, lo setzt el Cursor a el Anfang: KompilierenMarcaSeparaciónDef SetCurPosNull(1) sendmessage(@&(1),$00B1,0,0) Setzt den Cursor an den Anfang
declare ed01&
cls
ed01& = createedit(%HWnd,Hallolo, na wie gethts?,10,10,400,20)
WhileNot Equ(%MenuItem,-2)
WaitInput
Case GetFocus(ed01&): SetCurPosNull(ed01&)
EndWhile
Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 11.09.2004 ▲ | |
|
|
|
|
Timotheus | No bastante, si para Ejemplo el Ratón algo más weg vom linken Fensterrand gedrückt se, entonces muss el Schreibbalken a z.B. el zweiten Punto posición. Kurz y simplemente: ¿Cómo se puede Soy un Mausklick a una cierta Punto simulieren?
Timo |
|
|
| |
|
|
|
Michael Dell | Ok, entonces veces así: KompilierenMarcaSeparaciónDef GSC(1) !User32.dll,GetSysColor
Def ButtonUp(1) Equ(If(Equ(%Lastmessage,514),1,If(Equ(%Lastmessage,512),SetFocus(&(1)),0)),1)
Def SetCurPosNull(1) SendKey(@&(1),36) Setzt den Cursor an erste Stelle
Def SetCurPosEnd(1) SendKey(@&(1),35) Setzt den Cursor an letzte Stelle
Proc SetCurPos Setzt den Cursor an beliebige Stelle
Parameters hndl&,anz&
Case Lt(anz&,1)
SendKey(hndl&,36)
WhileLoop 1,@&(2),1
SendKey(hndl&,39)
EndWhile
EndProc
declare bt01&,ed01&,edak%
Clear bt01&,ed01&,edak%
Proc MakeED
Parameters HWHndl&,Text$,x%,y%,b%,h%
If Equ(edak%,0) wenn Edit-Control nicht existent dann...
ed01& = create(Edit,HWHndl&,Text$,x%,y%,b%,h%) Erzweuge Edit-Control mit Text inhalt
SetFocus(ed01&) Setze Focus auf Edit-Control
SetCurPos(ed01&,8) Setzt den Cursor an Stelle 8
Sleep 1000
SetCurPos(ed01&,6) Setzt den Cursor an Stelle 6
Sleep 1000
SetCurPos(ed01&,4) Setzt den Cursor an Stelle 4
Sleep 1000
SetCurPos(ed01&,2) Setzt den Cursor an Stelle 2
Sleep 1000
SetCurPosNull(ed01&) Setzt den Cursor an erste Stelle
Sleep 1000
SetCurPosEnd(ed01&) Setzt den Cursor an letzte Stelle
Sleep 1000
SetCurPosNull(ed01&) Setzt den Cursor an erste Stelle
Sleep 1000
EndIf
Return 1
EndProc
SetTrueColor 1
WindowStyle 26
Window Add(%maxX,10),0-500,66
Cls GSC(15)
bt01& = create(Button,%HWnd,Erstelle Edit,360,10,120,22)
Window 0,0-500,66
WhileNot Or(Equ(%MenuItem,-2),Equ(%MenuItem,-4000))
GetMessage
If GetFocus(bt01&)
If ButtonUp(%HWnd)
edak% = MakeED(%HWnd,Hallolo, na wie gethts?,10,10,340,22)
Case edak%: SetFocus(ed01&)
EndIf
EndIf
EndWhi
End
Michael...
P.S.: tener Yo alles en el Profano- Ayuda nachgeschlagen! |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 12.09.2004 ▲ |
|
|
|
|
Timotheus | Nein el auch no!
Hier veces una Demo: KompilierenMarcaSeparación Hier fehlt sólo el Def oder Proc SimuliereMausklick. In diesem Ejemplo es el Schreibbalken por el wiederholte clic a el richtigen Punto. Es como si uno en una vorhandenes Editar klickt, entonces setzt se el Balken en efecto automáticamente a el Punto el en el Editar angeklickt wurde.
Timo |
|
|
| |
|
|
|
| So? KompilierenMarcaSeparacióncls
declare x%,a&,b&
while 1
waitinput
if %Mousekey = 1
x% = %Mousex
a& = Create(Edit,%Hwnd,Hallo,0,%Mousey - 12,600,25)
@SENDMESSAGE(a&,$00B1,0,256)
@SETFOCUS(A&)
Sleep 1000
destroyWindow(a&)
endif
wend
Oder así?? KompilierenMarcaSeparaciónDEF @mouse_event(5)!User32,mouse_event
CLS
declarar x%,a&,b&
mientras que 1
Waitinput
if %Mousekey = 1
x% = %Mousex
a& = Crear(Editar,%Hwnd,¡Hola,0,%Mousey - 12,600,25)
@mouse_event(2,x%,%MOUSEY,0,0)
@mouse_event(4,x%,%MOUSEY,0,0)
@mouse_event(2,x%,%MOUSEY,0,0)
@mouse_event(4,x%,%MOUSEY,0,0)
Sleep 1000
destroyWindow(a&)
endif
wend
|
|
|
| |
|
|
|
Dietmar Horn | Noch como Ergänzung (a Antwort de Andreas)
DEF @mouse_event(5)!User32,mouse_event
mouse_event(N,dx%,dy%,0,0)
=> löst una künstliche Mausbewegung y una Mausklick de. => ha no Rückgabewert
N: son a, welche Botón del ratón gedrückt (simulado) voluntad se
N = $1 - Haga doble clic en simulieren N = $2 - linke Botón del ratón runterdrücken N = $4 - linke Botón del ratón loslassen N = $8 - rechte Botón del ratón runterdrücken N = $10 - rechte Botón del ratón loslassen N = $20 - mittlere Botón del ratón runterdrücken (si disponible) N = $40 - mittlere Botón del ratón loslassen (si disponible)
dx% = x-Koordinate el Mausposition (oder deren Änderung, wo ellos de el derzeitigen Position de gesehen, hingesetzt voluntad se) dy% = y-Koordinate el Mausposition (oder deren ...)
Der 4. y 5. Parámetro haben no Bedeutung, deswegen also jeweils en 0 conjunto.
Eventuell mußt Usted todavía una bißchen con el Mauskoordinaten experimentieren, weiß no, si esta relativ oder absolut son, si bezogen en el Desktop, la ventana principal, oder el Dialogfenster. Versuche esta auch veces $8000 en el Werten para N a addieren, also N = $8000 + $2, oder N = $2 conjunto. $8000 = MOUSEEVENTF_ABSOLUTE
Saludo Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 12.09.2004 ▲ |
|
|
|
|
Timotheus | Gracias
Timo |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | ¡Hola Personas!
Gibts porque el API mouse_event bajo XP/NT überhaupt todavía? Zitat de MSDN:
The mouse_event function synthesizes mouse motion and button clicks. Windows NT: This function has been superseded. Use SendInput instead.
SeeYou Pascal |
|
|
| |
|
|
|
Michael Dell | Microsoft quería mouse_event ya früher sustituir, el es jedenfalls así en el WinHlp no Win32s. Yo denk de Supportgründen funktioniert lo en el Moment todavía, uno debería wohl en Zukunft darauf verzichten. In Longhorn Será mejor que te va probablemente no mehr ir.
Michael... |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 13.09.2004 ▲ |
|
|
|
| |
|
- Página 2 - |
|
|
Michael Dell | Hier todos sin mouse_event: KompilierenMarcaSeparaciónDeclare a&,x&,y&,Fontx&,EDminX&
FontX& = 8 Font- Breite
EDminX& = 10 Edit- Control Startpunkt (X min)
Def SetCurMark(2) sendmessage(@&(1),$00B1,@&(2),0) Setzt Markierung
Proc SetCurPos Setzt den Cursor an beliebige Stelle
Parameters hndl&,anz&
SetFocus(hndl&)
SendKey(hndl&,36)
Case Lt(anz&,1): Return
WhileLoop 1,@&(2),1
SendKey(hndl&,39)
EndWhile
EndProc
Proc CalkCurPos
Parameters EDhndl&
Declare p1&,p2&
If Gt(x&,Add(EDminX&,Mul(Len(GetText$(EDhndl&)),FontX&))) Mauszeiger hinter Textende
p1& = Len(GetText$(EDhndl&))
ElseIf Gt(x&,EDminX&) Mauszeiger im Text
p1& = Int(Div(Sub(x&,EDminX&),FontX&))
Else Mauszeiger vor Text
p1& = 0
EndIf
SetCurPos(EDhndl&,p1&) Setzt den Cursor auf Mausposition
SetCurMark(EDhndl&,p1&) Setzt Markierung 0 bis Mausposition
EndProc
CLS
UseFont Arial,16,FontX&,1,0,0
SetDialogFont 1
while 1
Waitinput
if %Mousekey = 1
x& = %Mousex
y& = %Mousey
a& = Create(Edit,%Hwnd,Hallolo, na wie geht`s den so?,EDminX&,y& - 12,600,25)
CalkCurPos(a&)
Sleep 2000
destroyWindow(a&)
endif
wend
SetDialogFont 0
s4 href='./../../funktionsreferenzen/XProfan/end/'>End
Nur en a sehn el lo auch en reinem Profano va.
Michael... |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 14.09.2004 ▲ |
|
|
|
|
| ¡Hola Michael...
Vollkommen correcto!! El Message es ya en mi ersten Ver código fuente una bischen más oben como Alternative a MOUSE_EVENT. Aber él quería así necesariamente una Haga doble clic en. Yo sags sí - bastante unideal y unübersichtlich, si uno el Ver código fuente no inmediatamente sieht... |
|
|
| |
|
|
|
| Jaja OK AH, Yo habs sí verstanden.
Yo überleg me sí ya qué....
IF |
|
|
| |
|
|