| |
|
|
- Página 1 - |
|
Jörg Sellmeyer | Apéndice: con eingebautem WaitInput 5 funktioniert lo ahora como esperado.
Yo muss ya otra vez nerven...
Folgender Code macht en el Interpretermodus genau el, Yo erwarte y qué de el Code eigentlich ersichtlich ser debería
In compilierter Form stirbt el komplette Programa aber después de el Clic aufs Cruz uno Dialoges.
Declarar Dlg&[],x%,y%
Ventana de Estilo %11110
Mensajes del usuario $10
Cls
Título de la ventana "Hauptfenster " + Str$(%hwnd)
x% = %winleft + 100
y% = %wintop + 120
WhileLoop 0,3
Inc x% ,30
Inc y%, 40
Dlg&[&Loop] = Crear("Dialog",%hwnd,"" + Str$(&Loop +1),x%%,400,300)
Settext Dlg&[&Loop],"Test " + Str$(&Loop + 1) + " | " + Str$(Dlg&[&Loop])
Crear("Button",Dlg&[&Loop],"Test",50,50,100,30)
Wend
Mientras que 1
WaitInput
Case %key = 27:Romper' "ESC"
If %umessage = $10
If GetFocus(%hwnd)
Romper
ElseIf ClassOf(GetActiveWindow()) = "#32770"
WhileLoop 0,SizeOf(Dlg&[]) - 1
If GetActiveWindow() = Dlg&[&Loop]
Imprimir GetText $(Dlg&[&Loop]) + " beendet"
Setfocus(%hwnd)
DestroyWindow(Dlg&[&Loop])
'después de que el WaitInput instalado habe, klappt lo
'Yo erinnererte mich, dass el compilierte Programa el Messageschleife sólo cada x-te Tiempo abruft.
WaitInput 5
Romper
EndIf
Wend
Continue
EndIf
ElseIf GetText $(%getfocus) = "Test"
Imprimir "Button",ItemId(%getfocus),"gedrückt"
EndIf
Case %Umessage = $10:Imprimir "Das hier debería nie a sehen ser!"
Wend
Imprimir "Hauptprogramm beendet"
WaitInput
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 02.06.2018 ▲ |
|
|
|
|
« Dieser Contribución wurde como Solución gekennzeichnet. » |
|
Jörg Sellmeyer | Mi Versión es en el Signatur. Das Problema es, dass sin WaitInput después de %umessage = $10, el Programa termina, auch si sólo en una Dialogfenster el Schließen-Cruz betätigt se. Außerdem se la ventana principal no correcto aktiviert, si una Diálogo aktiv es, y una continuación el Cruz en el Ventana principal klickt.
Yo lo ahora así gelöst, dass Yo el Abfrage umgestellt tener y gleichzeit beim Ventana principal todavía en &mwnd chcke. Damit funktioniert lo para mich zufriedenstellend.
Declarar Dlg&[],x%,y%
Ventana de Estilo %11110 | 512
Mensajes del usuario $10
Cls
Título de la ventana "Hauptfenster " + Str$(%hwnd)
x% = %winleft + 100
y% = %wintop + 120
WhileLoop 0,3
Inc x% ,30
Inc y%, 40
Dlg&[&Loop] = Crear("Dialog",%hwnd,"" + Str$(&Loop +1),x%%,400,300)
Settext Dlg&[&Loop],"Test " + Str$(&Loop + 1) + " | " + Str$(Dlg&[&Loop])
Crear("Button",Dlg&[&Loop],"Test",50,50,100,30)
Wend
Imprimir "%GetFocus,GetActiveWindow(),%mensaje,&lparam,&wparam"
Mientras que 1
WaitInput
Case %key = 27:Romper' "ESC"
If %umessage = $10
If ClassOf(GetActiveWindow()) = "#32770"
WhileLoop 0,SizeOf(Dlg&[]) - 1
If GetActiveWindow() = Dlg&[&Loop]
Imprimir GetText $(Dlg&[&Loop]) + " beendet"
DestroyWindow(Dlg&[&Loop])
WaitInput 5
Romper
EndIf
Wend
Continue
ElseIf GetFocus(%hwnd) Or (%mwnd = %hwnd)
Romper
EndIf
ElseIf GetText $(%getfocus) = "Test"
Imprimir "Button",ItemId(%getfocus),"gedrückt"
EndIf
Case %Umessage = $10:Imprimir "Das hier debería nie a sehen ser!"
Wend
Imprimir "Hauptprogramm beendet"
WaitInput
|
|
|
| |
|
|
|
|
H.Brill | En me funktioniert lo compiliert, si sólo WaitInput oder auch con WaitInput 5. Hab lo ahora aber sólo XProfan X4 probiert.
Mit welcher Versión hast du probiert ?
PS: Un Línea verstehe Yo no bastante :
Wo hast du porque el "#32770" her ?
Ist el una feste Diálogo-Ressource en el Runtime ? |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 03.06.2018 ▲ |
|
|
|
|
Jörg Sellmeyer | Mi Versión es en el Signatur. Das Problema es, dass sin WaitInput después de %umessage = $10, el Programa termina, auch si sólo en una Dialogfenster el Schließen-Cruz betätigt se. Außerdem se la ventana principal no correcto aktiviert, si una Diálogo aktiv es, y una continuación el Cruz en el Ventana principal klickt.
Yo lo ahora así gelöst, dass Yo el Abfrage umgestellt tener y gleichzeit beim Ventana principal todavía en &mwnd chcke. Damit funktioniert lo para mich zufriedenstellend.
Declarar Dlg&[],x%,y%
Ventana de Estilo %11110 | 512
Mensajes del usuario $10
Cls
Título de la ventana "Hauptfenster " + Str$(%hwnd)
x% = %winleft + 100
y% = %wintop + 120
WhileLoop 0,3
Inc x% ,30
Inc y%, 40
Dlg&[&Loop] = Crear("Dialog",%hwnd,"" + Str$(&Loop +1),x%%,400,300)
Settext Dlg&[&Loop],"Test " + Str$(&Loop + 1) + " | " + Str$(Dlg&[&Loop])
Crear("Button",Dlg&[&Loop],"Test",50,50,100,30)
Wend
Imprimir "%GetFocus,GetActiveWindow(),%mensaje,&lparam,&wparam"
Mientras que 1
WaitInput
Case %key = 27:Romper' "ESC"
If %umessage = $10
If ClassOf(GetActiveWindow()) = "#32770"
WhileLoop 0,SizeOf(Dlg&[]) - 1
If GetActiveWindow() = Dlg&[&Loop]
Imprimir GetText $(Dlg&[&Loop]) + " beendet"
DestroyWindow(Dlg&[&Loop])
WaitInput 5
Romper
EndIf
Wend
Continue
ElseIf GetFocus(%hwnd) Or (%mwnd = %hwnd)
Romper
EndIf
ElseIf GetText $(%getfocus) = "Test"
Imprimir "Button",ItemId(%getfocus),"gedrückt"
EndIf
Case %Umessage = $10:Imprimir "Das hier debería nie a sehen ser!"
Wend
Imprimir "Hauptprogramm beendet"
WaitInput
|
|
|
| |
|
|
|
Michael W. | @H.Brill
Gefunden en [...]
The following table describes the system classes that are available only for use by the system. They are listed here for completeness sake.
Class | Description |
ComboLBox | The class for the list box contained en a combo box. |
DDEMLEvent | The class for Dynamic Data Exchange Management Library (DDEML) events. |
Message | The class for a mensaje-only window. |
#32768 | The class for a menu. |
#32769 | The class for the desktop window. |
#32770 | The class for a dialog box. |
#32771 | The class for the task switch window. |
#32772 | The class for icon titles. |
|
|
|
| System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 08.06.2018 ▲ |
|
|
|
|
H.Brill | Gracias para el Info. Pensé siempre, lo gäbe sólo Klassennamen, el para se incluso sprechen, etwa Button, Ventana usw. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 08.06.2018 ▲ |
|
|
|
|
Michael W. | Findest Usted en el gleichen Artikel.
Es allerdings una Mischmasch, el como zurückgegeben se. Getreu el Motto: ¿Por qué se Yo como 2 Variables nutzen, si yo alles en uno unterbringen kann. Der Anwender se ya wissen, qué él como gerade zugewiesen ha. |
|
|
| |
|
|
|
H.Brill | ¡Hola Jörg, Yo habe nochmals mehrere Male einiges ausprobiert. Dabei mußte Yo öfter el Taskmanager benutzen, en mein Programa abzuschießen.
Como lo aussieht, scheint el a el gerade aktiven Ventana a mentira. Folgendes scheint así a laufen, como gewünscht :
Declarar Dlg&[],x%,y%
Mensajes del usuario $10
Cls
Título de la ventana "Hauptfenster Beenden con ESC " + Str$(%hwnd)
x% = %winleft + 100
y% = %wintop + 120
WhileLoop 0,3
Inc x% ,30
Inc y%, 40
Dlg&[&Loop] = Crear("Dialog",%hwnd,"" + Str$(&Loop +1),x%%,400,300)
Settext Dlg&[&Loop],"Test " + Str$(&Loop + 1) + " | " + Str$(Dlg&[&Loop])
Crear("Button",Dlg&[&Loop],"Test",50,50,100,30)
EndWhile
Mientras que 1
WaitInput
Case %key = 27 : Romper' "ESC"
If %UMessage = $10
WhileLoop 0,SizeOf(Dlg&[]) - 1
If &UWnd = Dlg&[&Loop]
DestroyWindow(Dlg&[&Loop])
Imprimir "Dialoghandle : ", Dlg&[&LOOP], " es final !"
EndIf
EndWhile
SetActiveWindow(%HWnd)
EndIf
If GetText $(%getfocus) = "Test"
Imprimir "Button",ItemId(%getfocus),"gedrückt"
EndIf
Wend
Imprimir "Hauptprogramm final !"
WaitInput 2000
DestroyWindow(%HWnd)
End
Würde el deinen Vorstellungen entsprechen ?
PS: Normalerweise mache Yo para cada Diálogo una Proc y behandle el Diálogo en uno Bucle y una Waitinput. Halt así, como Roland auch en el Ayuda schreibt. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 08.06.2018 ▲ |
|
|
|
|
Jörg Sellmeyer | En mi Programa voluntad el Dialoge a Laufzeit erstellt, sin dass Yo Einfluss en Anzahl oder Titel nehmen voluntad. Un Proc pro Diálogo kommt also no en Cuestión. Yo voluntad deinen Vorschlag veces testen, bin aber con meiner Solución auch zufrieden, como por el nochmalige WaitInput el UserMessage zurückgesetzt se y no mehr en el Hauptprogramm ankommt. |
|
|
| |
|
|
|
Michael W. | Mensajes del usuario puede con -Nr auch zurückgesetzt y luego erneut gesetzt voluntad |
|
|
| |
|
|
|
Jörg Sellmeyer | Hab Yo alles ausprobiert, sin dass lo zuverlässig funktioniert ha. Liegt eben dran, dass el Runtime el Messageschleife seltener pollt, como el Interpreter. |
|
|
| |
|
|
|
H.Brill | Sí, scheint wohl a XProfans Messagehandling a mentira. En mi Code oben kommt después de Schließen aller Dialoge el wm_close - Nachricht auch no mehr para Ventana principal.
Como müßte uno probieren, si uno con Abschalten el internen Messageverarbeitung con Conjunto("FastMode", 1) y GetMessage más kommt. Auch Dialoge son no ideal, como ellos normalerweise en $10 no automáticamente reagieren.
Como bietet XProfan sí todavía mehr Möglichkeiten. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 09.06.2018 ▲ |
|
|
|
|
H.Brill | So scheint lo sauber (auch como .exe) a laufen :
Declarar Dlg&[],x%,y%
Mensajes del usuario $10
Cls
Título de la ventana "Hauptfenster Beenden con ESC " + Str$(%hwnd)
x% = %winleft + 100
y% = %wintop + 120
WhileLoop 0,3
Inc x% ,30
Inc y%, 40
Dlg&[&Loop] = Crear("Window",%hwnd,"" + Str$(&Loop +1),x%%,400,300)
Settext Dlg&[&Loop],"Test " + Str$(&Loop + 1) + " | " + Str$(Dlg&[&Loop])
Crear("Button",Dlg&[&Loop],"Test",50,50,100,30)
EndWhile
Mientras que 1
WaitInput
Case %key = 27 : Romper' "ESC"
If %UMessage = $10
WhileLoop 0,SizeOf(Dlg&[]) - 1
If &UWnd = Dlg&[&Loop]
DestroyWindow(Dlg&[&Loop])
Imprimir "Dialoghandle : ", Dlg&[&LOOP], " es final !"
Romper
EndIf
EndWhile
Case &UWnd = %HWnd : Romper
SetActiveWindow(%HWnd)
EndIf
If GetText $(%getfocus) = "Test"
Imprimir "Button",ItemId(%getfocus),"gedrückt"
EndIf
Wend
Imprimir "Hauptprogramm final !"
WaitInput 2000
DestroyWindow(%HWnd)
End
|
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 09.06.2018 ▲ |
|
|
|