Forum | | | | 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 |
| | | | |
| | Michael Dell | allô Timo,
si je cela richtig vois meinst du wohl ne art Listbox. ensuite hilft dir vieleicht cet Demo: KompilierenMarqueSéparationDef 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
Fin
Salut
Michael |
| | | Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 11.09.2004 ▲ |
| |
| | Timotheus | je voudrais à einer bestimmte Stelle un Éditer erzeugen.
cela geschieht si une MausTaste gedrückt wird: Créer(Éditer,%Hwnd,je suis un Éditer,0,%mousey,%WinRight,25)
maintenant voudrais je mais den Schreibbalken im Éditer à qui richtige Stelle apporter. cela est si je entier à gauche am la fenêtre une Mausteste drücke, ensuite voudrais je d'abord cela Éditer erzeugen, et ensuite à %Mousex et %Mousey une Mausklick simulieren. Dadurch steht ensuite qui Schreibbalken avant dem ersten marque.
Timo |
| | | | |
| | 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 ▲ |
| |
|
répondreOptions du sujet | 5.640 Views |
Themeninformationencet Thema hat 5 participant: |