Deutsch
Forum

Waitinput Durchbruch

 
- Seite 1 -



Hubert
Binnewies
Hallo zusammen,

Ich habe ein Proggi in Arbeit das schon knapp 1500 Zeilen lang ist.
Nun hat das Proggi mehrere Fenster mit Buttons.
Logischerweise setze ich nach der Fenstererstellung eine Whilenot Schleife in der der erste Befehl ein Waitinput ist.
aber seltsamerweise wird das Waitinput permanent durchbrochen ohne das ich eine Aktion ausführe.
Im Programm verwende ich keinen Timer, es ist zwar die Thread.pcu vorhanden, aber sie steckt in einem Proc-Endproc das nicht aufgerufen wird.
und ansonsten weiss ich nicht womit das Waitinput von meinem Proggi durchbrochen werden kann.
Hat einer ne Ahnung wie ich abfragen kann womit das Waitinput durchbrochen wurde??

Danke schonmal im voraus.

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
03.08.2006  
 



 
- Seite 1 -



Hubert
Binnewies
Ich habe mal weitergeforscht....

Also....in folgender Konstelation habe ich im speziellen das Problem:
KompilierenMarkierenSeparieren
DLGRhin&=CREATE("DIALOG",%HWND,"Rechner hinzufügen",22,20,400,330)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
Def Cps(6) Control("STATIC",@$(2),$5400010E,@%(3),@%(4),@%(5),@%(6),@%(1),2000, %Hinstance)
Picstatic1&=Cps(DlgRhin&,"",0,0,Width(Dlg&),Height(Dlg&))
Pich1&=Create("hpic",-1,"IMGRHhintergrund.bmp")
Sendmessage(Picstatic1&,$172,0,Pich1&)
EDIT1& =@CREATE("EDIT",Picstatic1&,"",0050,0080,0285,0020)
EDIT2& =@CREATE("EDIT",Picstatic1&,"",0050,0140,0285,0020)
EDIT3& =@CREATE("EDIT",Picstatic1&,"",0050,0202,0285,0020)
BUTTON1Rhin& =@CREATE("BUTTON",Picstatic1&,"Hinzufügen",0037,0250,0090,0030)
BUTTON2Rhin& =@CREATE("BUTTON",Picstatic1&,"Liste",0147,0250,0090,0030)
BUTTON3Rhin& =@CREATE("BUTTON",Picstatic1&,"OK",0257,0250,0090,0030)
SETFOCUS(Picstatic1&)
LET DIALOGENDERhin%=0

WHILENOT DIALOGENDERhin%

    waitinput

    If @EQU(%KEY,2)

        LET DIALOGENDERhin%= 1

    ELSEIF %wmPaint=1

    ELSEIF GETFOCUS(EDIT1&) EDIT

    ELSEIF GETFOCUS(EDIT2&) EDIT

    ELSEIF GETFOCUS(EDIT3&) EDIT

    ELSEIF GETFOCUS(BUTTON1Rhin&) BUTTON Hinzufügen

        LET DIALOGENDERhin%= 1
        ..........

    ELSEIF GETFOCUS(BUTTON2Rhin&) BUTTON Liste

        LET DIALOGENDERhin%= 1
        ......

    ELSEIF GETFOCUS(BUTTON3Rhin&) BUTTON OK

        LET DIALOGENDERhin%= 1

    ENDIF

Endwhile

...........

ausser dem %wmpaint wird das waitinput nicht durchbrochen.
das Waitinput reagiert nicht auf die Buttons,
nur wenn ich auf Buttons im übergeordneten Hauptfenster klicke.
und bei dem Fenster habe ich den Hintergrund per Loadbmp geladen, da Xprofan und Windows das Neuzeichnen on the fly erledigen.

Im Unterfenster habe ich diesen Weg gewählt, da das Control auch hier das Neuzeichnen on the fly erledigt.
Schmeisse ich das Control raus reagiert auch der Waitinput wieder.

Ich kann also weder auf das Control noch auf das Waitinput verzichten.
Hat einer ne Idee wie ich die beiden dazu bringe sich zu vertragen?

Vielen Dank im voraus.

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
03.08.2006  
 



Welche XProfanversion genau?

Der Code ist leider nicht lauffähig - sowas ist gemein.
 
03.08.2006  
 




RGH
Hallo,
gebe bei den Dialogelementen den Dialog als Elternfenster an und nicht das Static. Das Elternfenster gibt an, an welches Fenster Nachrichten über das Betätigemn der Dialogelemnte geschickt werden. Ein Static kann damit nichts anfangen.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
03.08.2006  
 




Hubert
Binnewies
[quote:63b31b4736=iF]Welche XProfanversion genau?

Der Code ist leider nicht lauffähig - sowas ist gemein. [/quote:63b31b4736]
tztz.....Also...irgendwo im Forum (sorry ich weiss nicht mehr wo) hattest du darum gebeten die verwendete XProfan Version an eine bestimmte Stelle zu schreiben...
Hab ich gemacht, aber wenn das zu klein ist musst Du schon deine Webseite umschreiben

[quote:63b31b4736=RGH]Hallo,
gebe bei den Dialogelementen den Dialog als Elternfenster an und nicht das Static. Das Elternfenster gibt an, an welches Fenster Nachrichten über das Betätigemn der Dialogelemnte geschickt werden. Ein Static kann damit nichts anfangen.

Gruß
Roland[/quote:63b31b4736]
Hab ich versucht, dabei entsteht aber ein anderes Problem.
Da ich das Static zuerst zeichne liegen die Buttons und Edits optisch vor dem Static.
Aber da der Parent der Dialog ist liegen Sie Programmtechnisch dahinter und können Somit mit der Maus nicht erreicht werden.
Ergo: funktioniert nicht.

Aber ich habe schonmal ein Ähnliches Prob gehabt, vielleicht erinnerst Du Dich daran IF.
Schau mal hier : [...] 
Da hattest nämlich genau DU mir den Tip mit dem Static gegeben.

Ich hab mir aber den Beitrag aber auch nochmal genau durchgelesen, und da noch ein Tip von Dir entdeckt, den Getmessage.
Daraus habe ich eine Lösung gebastelt (ich hoffe die läuft auch noch im Compilat)
KompilierenMarkierenSeparieren
DLGRhin&=CREATE("DIALOG",%HWND,"Rechner hinzufügen",250,120,400,330)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
Def Cps(6) Control("STATIC",@$(2),$5400010E,@%(3),@%(4),@%(5),@%(6),@%(1),2000, %Hinstance)
Picstatic&=Cps(DlgRhin&,"",0,0,Width(Dlg&),Height(Dlg&))
Pich&=Create("hpic",-1,"IMGRHhintergrund.bmp")
Sendmessage(Picstatic&,$172,0,Pich&)
EDIT1& =@CREATE("EDIT",Picstatic&,"",0050,0080,0285,0020)
EDIT2& =@CREATE("EDIT",Picstatic&,"",0050,0140,0285,0020)
EDIT3& =@CREATE("EDIT",Picstatic&,"",0050,0202,0285,0020)
BUTTON1Rhin& =@CREATE("BUTTON",Picstatic&,"Hinzufügen",0037,0250,0090,0030)
BUTTON2Rhin& =@CREATE("BUTTON",Picstatic&,"Liste",0147,0250,0090,0030)
BUTTON3Rhin& =@CREATE("BUTTON",Picstatic&,"OK",0257,0250,0090,0030)
SETFOCUS(Picstatic&)
LET DIALOGENDERhin%=0

WHILENOT DIALOGENDERhin%

    GetMessage

    If &wParam=1

        Continue

    Endif

    If @EQU(%KEY,2)

        LET DIALOGENDERhin%= 1

    ELSEIF GETFOCUS(EDIT1&) EDIT

    ELSEIF GETFOCUS(EDIT2&) EDIT

    ELSEIF GETFOCUS(  BUTTON1Rhin&) BUTTON Hinzufügen

        LET DIALOGENDERhin%= 1

    ELSEIF GETFOCUS(BUTTON2Rhin&) BUTTON Liste

        LET DIALOGENDERhin%= 1

    ELSEIF %Getfocus=BUTTON3Rhin& BUTTON OK

        LET DIALOGENDERhin%= 1

    ENDIF

Endwhile


Funktioniert soweit einwandfrei, ich habe nur im weiteren Verlauf ein anderes Prob:
Wie kann ich die Systemvariable %Key löschen?
Mit einfachem Auslesen wird die nicht zurück gesetzt...

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
04.08.2006  
 



Hm %key löschen hm vielleicht mit
KompilierenMarkierenSeparieren
?
 
04.08.2006  
 




Jörg
Sellmeyer
Hallo Georg,
Probier mal das:
KompilierenMarkierenSeparieren
print %key,"Taste drücken"
WaitInput
print %key,"Taste drücken, %key wird zurückgesetzt"
WaitInput
SetTimer 1
WaitInput
KillTimer
print %key
WaitInput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
04.08.2006  
 




Hubert
Binnewies
Danke euch beiden....hat wunderbar funktioniert..

Jetzt weiss ich auch das der GetMessage den %Key nicht löscht.
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
04.08.2006  
 




Hubert
Binnewies
Ein Prob habe ich noch mit meiner neuen Konstruktion....

Ich weiss jetzt zwar wie %Key gelöscht wird, aber in der Konstruktion wird er nicht mehr gesetzt (weiss der geier warum)..
Jetzt bin ich nicht in der Lage das Kreuzchen zum Schliessen abzufragen.
Auch %Message , &wParam , &lParam geben keine eindeutige Werte, nur bei einem Doppelklick auf Schliessen, und das ist nicht Sinn der Sache.

Hat da eine ne Idee??

Danke schonmal im voraus.

Hubert.
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
05.08.2006  
 




Hubert
Binnewies
Keiner eine Idee???

Seltsam...
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
08.08.2006  
 



 
- Seite 2 -


Immer einen lauffähigen Code bitte welcher das Problem aufzeigt - dann kann auch geholfen werden.
 
08.08.2006  
 




Hubert
Binnewies
Der zweite Code ist gemeint.....
Um ihn lauffähig zu machen, muss noch ein Hauptfenster erzeugt werden, die Variablen declariert werden und ne Bitmap dazu gesetzt werden....
Die ersten 2 Dinge könnte ich ja noch machen...
Aber die Bitmap.....

Das da oben ist doch bis auf:
KompilierenMarkierenSeparieren
Def Cps(6) Control("STATIC",@$(2),$5400010E,@%(3),@%(4),@%(5),@%(6),@%(1),2000, %Hinstance)
Picstatic&=Cps(DlgRhin&,"",0,0,Width(Dlg&),Height(Dlg&))
Pich&=Create("hpic",-1,"IMGRHhintergrund.bmp")
Sendmessage(Picstatic&,$172,0,Pich&)

und
KompilierenMarkierenSeparieren
Der Standart code wie er vom Roc erzeugt wird.
Das obere ist nur eingesetzt und die Create´s danach angepasst
Das GetMessage ersetzt das Waitinput und die If abfrage sorgt dafür dass das Fenster erst reagiert wenn man auf nen Butten die maustaste loslässt.

das blöde ist dass das obere Konstrukt nicht den %Key setzt womit
KompilierenMarkierenSeparieren
If @EQU(%KEY,2)


niemals zutrifft.

wie kann ich jetzt dennoch das klicken auf das Schliessfeld abfragen?
oder wie bekomme ich das Schliessfeld ganz weg?

Danke schonmal im voraus...

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
08.08.2006  
 



Das Schliessfeld (systemmenü) kannst Du über den Windowstyle abschaffen. (-8)
 
08.08.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.584 Betrachtungen

Unbenanntvor 0 min.
H.Brill16.06.2024
RudiB.05.03.2024
Joerg28.04.2016
Unbenannt16.05.2012

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie