Foro | | | | 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 |
| | | | |
| | Michael Dell | ¡Hola Timo,
si yo el correcto sehe media du wohl ne art Listbox. Dann hilft dir vieleicht esta Demo: KompilierenMarcaSeparaciónDef LB_LastItem(1) Int(Sub(SendMessage(@&(1),$018B,0,0),1)) Index-Nummer des letzten Eintrag
Def LB_DelSel(1) SendMessage(@&(1),$0186,-1,0) hebt Markierungen auf
Def LB_GetSel(1) SendMessage(@&(1),$0188,0,0) Index-Nummer des Markierten Eintrags
Def LB_SelLastItem(1) SendMessage(@&(1),$0186,LB_LastItem(@&(1)),0) letzten Eintrag markieren
Def LB_SetSel(2) SendMessage(@&(1),$0186,@&(2),0) bestimmten Eintrag markieren
Declare lb01&
Cls
lb01& = Create(ListBox,%HWnd,,40,40,200,360) Erzeuge Listbox
AddString(lb01&,Eintrag_0) Setze Einträge 0-4
AddString(lb01&,Eintrag_1)
AddString(lb01&,Eintrag_2)
AddString(lb01&,Eintrag_3)
AddString(lb01&,Eintrag_4)
Achtung der erste Eintrag hat den Index 0
MessageBox(Str$(LB_LastItem(lb01&)),Letzter Eintrag:,0) Ausgabe Letzter Eintrag
LB_SetSel(lb01&,2) Markiere Eintrag Nr.: 2
MessageBox(Str$(LB_GetSel(lb01&)),Eintrag:,0) Ausgabe Eintrag
LB_DelSel(lb01&) Hebe Markierung auf
MessageBox(Str$(LB_GetSel(lb01&)),Eintrag:,0) Ausgabe Eintrag
LB_SelLastItem(lb01&) Markiere letzten Eintrag
MessageBox(Str$(LB_GetSel(lb01&)),Eintrag:,0) Ausgabe Eintrag
LB_DelSel(lb01&) Hebe Markierung auf
MessageBox(Str$(LB_GetSel(lb01&)),Eintrag:,0) Ausgabe Eintrag
WhileNot Equ(%MenuItem,-2)
WaitInput
If GetFocus(lb01&)
MessageBox(Str$(LB_GetSel(lb01&)),Eintrag:,0) Ausgabe Eintrag
Sleep 10
LB_DelSel(lb01&) Hebe Markierung auf
SetActiveWindow(%HWnd) Setze Focus aufs Hauptfenster
EndIf
EndWhile
End
Saludo
Michael |
| | | Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 11.09.2004 ▲ |
| |
| | Timotheus | Yo möchte a uno cierto Punto una Editar erzeugen.
Das geschieht si una MausTaste gedrückt se: Crear(Editar,%Hwnd,Yo bin una Editar,0,%mousey,%WinRight,25)
Jetzt möchte Yo aber el Schreibbalken en el Editar a el richtige Punto bringen. Das heißt si yo bastante links al Ventana una Mausteste drücke, entonces möchte Yo zuerst Edit erzeugen, y luego a %Mousex y %Mousey una Mausklick simulieren. Dadurch es entonces el Schreibbalken antes el ersten Signo.
Timo |
| | | | |
| | 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 ▲ |
| |
|
RespuestaThemeninformationenDieses Thema ha 5 subscriber: |