| |
|
|
- page 1 - |
|
Timotheus | Salut,
j'ai un Problem. je voudrais à un certain Stelle im Programme la fenêtre une EditBox erstellen. qui y-Koordinate wird par den Mausklick ausgewählt, et qui x-K. ist 0. dans cette Éditer-Box peux mais déjà un Text stehen. c'est pourquoi muss Je l' Mausklick encore einmal wiederholen, sobald cela Éditer erzeugt wurde. Dadurch mets sich qui Cursor im Éditer oui c'est ca sur qui richtige Stelle, comment dans einem Multiedit. comment fais je cela ?
Timo |
|
|
| |
|
|
|
| |
|
- page 1 - |
|
Michael Dell | Sorry, kleiner Irrtum!
Versuchs la fois hiermit, es mets den Cursor à den Anfang: KompilierenMarqueSéparationDef 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 | pas entier, si zum Beispiel qui souris quelque chose plus weg vom linken Fensterrand gedrückt wird, ensuite muss qui Schreibbalken à z.B. qui zweiten Stelle stehen. Kurz et simple: comment peux je une Mausklick à un certain Stelle simulieren?
Timo |
|
|
| |
|
|
|
Michael Dell | Ok, ensuite la fois so: KompilierenMarqueSéparationDef 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
Fin
Michael...
P.S.: hab je alles dans qui Profan- Aider nachgeschlagen! |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 12.09.2004 ▲ |
|
|
|
|
Timotheus | non cela aussi pas!
ici la fois un Demo: KompilierenMarqueSéparation ici fehlt seulement qui Def ou bien Proc SimuliereMausklick. dans diesem Beispiel ist qui Schreibbalken par cela wiederholte klicken à qui richtigen Stelle. c'est comment si on dans un vorhandenes Éditer klickt, ensuite mets sich qui poutre oui aussi automatisch à qui Stelle qui im Éditer angeklickt wurde.
Timo |
|
|
| |
|
|
|
| So? KompilierenMarqueSéparationcls
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
ou bien so?? KompilierenMarqueSéparationDEF @mouse_event(5)!User32,mouse_event
CLS
declare x%,a&,b&
tandis que 1
Waitinput
si %Mousekey = 1
x% = %Mousex
a& = Créer(Éditer,%Hwnd,allô,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 | encore comme Ergänzung (zur Antwort de Andreas)
DEF @mouse_event(5)!User32,mouse_event
mouse_event(N,dx%,dy%,0,0)
=> löst une künstliche Mausbewegung et une Mausklick aus. => hat keinen Rückgabewert
N: gibt à, quelle Bouton de la souris gedrückt (simuliert) volonté soll
N = $1 - Double-cliquez sur simulieren N = $2 - linke Bouton de la souris runterdrücken N = $4 - linke Bouton de la souris loslassen N = $8 - rechte Bouton de la souris runterdrücken N = $10 - rechte Bouton de la souris loslassen N = $20 - mittlere Bouton de la souris runterdrücken (si vorhanden) N = $40 - mittlere Bouton de la souris loslassen (si vorhanden)
dx% = x-Koordinate qui Mausposition (ou bien en Changement, wohin vous de qui derzeitigen Position aus gesehen, hingesetzt volonté soll) dy% = y-Koordinate qui Mausposition (ou bien en ...)
qui 4. et 5. paramètre avons aucun signification, deswegen alors jeweils sur 0 mettons.
Eventuell dois Du encore légèrement avec den Mauskoordinaten experimentieren, sais pas, si cet relativ ou bien absolu sommes, si bezogen sur den Desktop, cela Hauptfenster, ou bien cela Dialogfenster. Versuche dabei aussi la fois $8000 chez den Werten pour N trop addieren, alors N = $8000 + $2, ou bien N = $2 mettons. $8000 = MOUSEEVENTF_ABSOLUTE
Salut 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 | merci
Timo |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | allô gens!
Gibts car qui API mouse_event sous XP/NT überhaupt encore? citation 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 voulais mouse_event déjà früher ersetzen, cela steht jedenfalls so dans qui WinHlp no Win32s. je denk aus Supportgründen funktioniert es im Moment encore, on sollte wohl dans Zukunft puis verzichten. dans Longhorn wirds wohl pas plus aller.
Michael... |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 13.09.2004 ▲ |
|
|
|
| |
|
- page 2 - |
|
|
Michael Dell | ici cela ganze sans mouse_event: KompilierenMarqueSéparationDeclare 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/'>Fin
seulement afin de sehn cela es aussi dans reinem Profan allez.
Michael... |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 14.09.2004 ▲ |
|
|
|
|
| allô Michael...
Vollkommen richtig!! qui Message steht déjà dans mon ersten Voir le texte source un un peu plus dessus comme Alternative trop MOUSE_EVENT. mais il voulais so absolument une Double-cliquez sur. je sags oui - assez unideal et unübersichtlich, si on den Voir le texte source pas tout de suite sieht... |
|
|
| |
|
|
|
| Jaja OK AH, je habs oui verstanden.
je überleg mir oui déjà quoi....
iF |
|
|
| |
|
|