| |
|
|
Michael Axtmann | ...will nicht klappen!??
Hallo, nach ewiger rumprobiererrei und Suche über die XProfan Hilfe, komme ich nun doch mit dieser banalen Sache hier her: Wenn ich aus dem Hauptfenster heraus ein neues Fenster erzeuge, wird mein waitinput nur mit Clicks auf dei dort befindlichen Buttons verlassen, jedoch nicht per Tastendruck! Was mache ich falsch????? Hab ich was vergessen aufs neue Fenster umzuleiten?? Gruß PS:Im Anhang ein kleines Beispiel! Der Knopf sollte mit der "Space" Taste bedient werden können! In beiden Fenstern!! |
|
|
| |
|
|
|
E.T. |
...
PROC FENSTER2
HWND% = create("window",%hwnd,"FENSTER2", 100,100, 640,480)
setactivewindow(HWND%)
button2& = Create("Button",HWND%,"Schließen",50,50,100,50)
'Mittels Tab-Taste erstmal auf den Button2 focusieren oder
SetFocus(Button2&)'Focus sofort auf den Button
while xe%=1
...
Das 2. Fenster würde ich aber auf keinen Fall HWND% nennen... |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 24.09.2012 ▲ |
|
|
|
|
Michael Axtmann | Hi, danke, funktioniert zwar, aber ich denke das Problem wird "nur umschifft", denn wenn ich im 2.Fenster zur Kontrolle nach waitinput ein print %scankey einbau, dann schreibt er mir "0" !! Nach waitinput im Hauptfenster schreibt er den richtigen Scancode.... siehe Bsp. Grüße |
|
|
| |
|
|
|
E.T. | Jo, hast recht mit dem "umschiffen": Mit dem setzen des Focus auf den Button wird dann selbiger mit der Leertaste "betätigt" - Denkfehler. Hab jetzt mal 'ne Weile probiert und feststellen müssen, das wohl in einem anderen (focusiertem) Fenster als wie im Hauptfenster die meisten Systemvariablen (wozu ja scankey gehört) das waitinput nicht durchbrechen. Beweis: mache in deinem Bsp. das Hauptfenster aktiv, dann reagiert dein Fenster2 auf die Leertaste und wird geschlossen. Das müssen wir wohl Roland mal als "Bug oder vermeintlicher" nahe legen
Hab jetzt mal auf die schnelle alles so "umgebastelt", das es mit dem Fenster2 funktioniert: Das Zauberwort (oder Nothilfe): SubClassing !!
Hab einfach mal dein Fenster2 "gesubclasst" und die Message 257 (loslassen der Leertaste) abgefangen, schon funktioniert es.
Habe allerdings den Aufruf des 2. Fensters per Leertaste mal rausgenommen: Beim Aufrufen reagiert scankey auf das drücken der Taste (und öffnet das "Fenster2),das loslassen würde dann vom 2. Fenster sofort wieder mit Schließen quittiert.
Also am besten mit SubClassing beschäftigen und Roland den Fehler suchen lassen, warum nur im Hauptfenster auf die Tastatur reagiert wird
Ach ja, der auf die schnelle "umgeschraubte" Quelltext:
declare e%,xe%,taste%
declare button1&,button2&
declare HWND%
cls
e% = 1
xe%=1
button1& = Create("Button",%HWND,"Start",50,50,50,50)
PROC FENSTER2
HWND% = create("window",%hwnd,"FENSTER2", 100,100, 640,480)
setactivewindow(HWND%)
button2& = Create("Button",HWND%,"Schließen",50,50,100,50)
SubClass HWND% , 1
while xe%=1
waitinput
if clicked(button2&)
print "Fenster2 durch Button geschlossen geschlossen!!"
xe% = 0
destroywindow(HWND%)
endif
endwhile
ENDPROC
SubClassProc
If SubClassMessage(HWND%, 257)'Leertaste loslassen
print "Fenster2 in SubClassProc durch Message 257 (Leertaste losgelassen) geschlossen!!"
xe% = 0
destroywindow(HWND%)
endif
endproc
while e%=1
waitinput
if clicked (button1&)
xe% = 1
FENSTER2
endif
endwhile
end
Gute Nacht !!! |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 25.09.2012 ▲ |
|
|
|
|
| ... oder einfach HotKeys per addHotKey( ... |
|
|
| |
|
|
|
Michael Axtmann | Hi, danke, dass Ihr euch das mal angeschaut habt! Hatte schon öfters damit gekämpft und einfach nur gedacht ich bin zu doof, aber das waitinput wird definitiv manchmal einfach nicht verlassen!! Grüße |
|
|
| |
|
|
|
| Auch bei Tasten die mit addHotKey angelegt werden? |
|
|
| |
|
|
|
| |
|
| |
|
|