| |
|
|
Hubert Binnewies | Hallo Rolf..
Zum ersten, ich habe mich auf Deiner Empfehlung und Erklärungen hin nochmal mit Deinem Roc beschäftigt, und muss sagen: Entschuldigung, der ist wirklich um Längen besser als ich damals behauptet habe.
Aber:
Ich habe im ROC mir ein Hauptfenster erstellt das 2 Webelemente (Browser) enthält. Der Roc erzeugte mir unter anderem folgende Zeilen:
DECLARE WEBDLL&,HTML$
WEBDLL&=USEDLL(D:PROGRAMMEXPROFAN9LIBATL.DLL)
DEF ATLAXWININIT(0) !D:PROGRAMMEXPROFAN9LIBATL.DLL,AtlAxWinInit
ATLAXWININIT()
CREATEOBJECT %HWND,AtlAxWin,D:PROGRAMMEXPROFAN9LIBVORLAGE.HTM,0025,0190,0450,0450,$50300105,$200
LET WEBCONTROL1&=@&(0)
CREATEOBJECT %HWND,AtlAxWin,D:PROGRAMMEXPROFAN9LIBVORLAGE.HTM,0510,0190,0250,0450,$50300105,$200
LET WEBCONTROL2&=@&(0)
und beim beenden:
dabei habe ich beim beenden einen Anwendungsfehler erhalten. Es hat ne Weile gedauert, aber ich habs rausgefunden warum: Der ROC sollte beim Beenden noch folgende Zeilen einfügen (dann klappt es):
Dann noch eine Frage: Wie bekomme ich das Webcontrol dazu den Inhalt neu zu laden? Das ist für meinen Programmablauf nötig.
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.09.2006 ▲ |
|
|
|
|
| Das einfachste wird ein reCreate sein. |
|
|
| |
|
|
|
Hubert Binnewies | dann flackert aber kurz das fenster...sieht unschön aus...
wenns nicht anders geht mach ich es so...... wäre mir aber lieber mit nem neuladen... |
|
|
| 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.09.2006 ▲ |
|
|
|
|
| Ich glaube hier [...] wirst Du fündig - wenn Du die Lösung extrahiert hast wäre ich hier für ein Posting dankbar. |
|
|
| |
|
|
|
Jörg Sellmeyer | Def LockWindowUpdate(1) !USER32,LockWindowUpdate Hilft Dir da weiter. LockWindowUpdate(%hwnd) jetzt Control neuerstellen LockWindowUpdate(0) und weiter gehts Alternativ mit LockWindowUpdate(Webcontrol1&) probieren. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 05.09.2006 ▲ |
|
|
|
|
Rolf Koch | Sorry, grad von der Arbeit gekommen Stimmt, komischerweise ist das mit dem Destrowindow aufeinmal so, denn damals bei der Entwicklung nicht. Aber (oje) wieder was neues für ROC
Der Rest haben die anderen schon beantwortet.
Freut mich, dass der bei einigen als PillePalle abgestuften ROC (vielleicht nur weil er in Profan geschrieben ist) Dir nun doch zusagt. Wenn ich nicht aus vielen Mails wüsste, dass es doch eine Anhängerschaft gäbe, würde ich mir auch nicht soviel Arbeit machen |
|
|
| |
|
|
|
Rolf Koch | Ok in der Arbeitsversion werden alle Webcontrols am Schluss jetzt zerstört. |
|
|
| |
|
|
|
Hubert Binnewies | Jörg Sellmeyer
Def LockWindowUpdate(1) !USER32,LockWindowUpdate Hilft Dir da weiter. LockWindowUpdate(%hwnd) jetzt Control neuerstellen LockWindowUpdate(0) und weiter gehts Alternativ mit LockWindowUpdate(Webcontrol1&) probieren.
Ich habs rauf und runter versucht..... Ich denke dass das hier nur dazu gedacht ist das Fenster oder den Control neu zu zeichnen. Aber nicht um dessen Inhalt neu zu laden.
Aber genau das Funktioniert auch nicht (zumindest nicht richtig)
Ich habe mit dem HTML Control momentan 2 Probleme. 1.) Folgende Konstellation: Ich habe ein Hauptfenster (Bildschirmfüllend ohne Titel und Menüzeile, so groß das auch die Windowsleiste unten abgedeckt ist, Das Proggi soll den Rechner auf eine Funktion festnageln, weil anschliessend der Rechner nur zu dem Zweck, dieses Proggi auszuführen verkauft wird.) in dem mittels LoadBMP eine Hintergrundgrafik geladen wird. Darauf sind derzeit 2 Color Static Transparent, dessen Text ich Zentriert habe (mittels SKControl.dll), 12 Buttons und 2 HTML Controls. Bei einem bestimmten Button öffnet sich ein Dialog, in dem Werte eingegeben werden, die ich überprüfe. Hat der Nutzer einen Fehler bei der Eingabe gemacht kommt darauf noch eine AlertBox. Klickt nun der Nutzer auf OK, verschwindet die AlertBox und (nun kommt es) auch der unverdeckte Inhalt der HTMLControls. Es wird nur noch das Hintergrundbild in den HTMLControls angezeigt. Verwende ich nun das oben genannte LockWindowUpdate wird der Inhalt nur neu gezeichnet wenn ich meine Dialogbox bewege und die Maustaste loslasse. Das ist nicht akzeptabel.
2.)Auf dem Rechner läuft als Dienst auch der Xampp (ein apache 2.0.2 Server) und MySQL. Auf dem Rechner befinden sich Teile einer Webseite die mittels DynDNS in einer Seite auf meinem Webspace aufgerufen werden. Diese Teile bestehen hauptsächlich aus PHP Scripte die auf die Eingaben des externen Nutzers reagieren. Womit dessen Inhalte unterschiedlich sind. Nun Fungiert mein Proggi als Anzeige dessen was der Externe Nutzer auf der Seite macht, Womit die Inhalte in den HTML Controls variieren. Somit brauche ich eine Möglichkeit dessen Inhalt neu zu laden, und zwar ohne Klick auf einen Link. Mir wäre auch eine Lösung recht über der ich erst (zum Beispiel mittels der ONL.DLL) die Seite in einen String lade und dem Control übergebe. Nur das ReCreate der HTML Controls habe ich versucht, Das Flackern der Controls ist mehr als grausam und kann ich keinem Kunden zumuten.
Ich hoffe es hat da einer ein paar Lösungen für mich.
Vielen Dank 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!" | 07.09.2006 ▲ |
|
|
|
|
Jörg Sellmeyer | Hallo Hubert, LockWindowUpdate ist dazu da, das Neuzeichnen eines Controls oder Fensters zu unterbinden! Ich nutze es z.B. dann, wenn ich eine Listbox mit viel Inhalt füllen will. Normalerweise wird jeder neue Eintrag sichtbar in die Liste eingetragen (auch wenn er hinten angehängtwird wird dafür das Control von Windows aktualisiert). Das kostet Zeit. Wenn man vorher und hinterher LockWindowUpdate aufruft, bleibt die Listbox unberührt und erst bei abgeschlossenen Aktion wird das Control neu gezeichnet. Dafür evtl. einfach noch ein repaint anhängen. Geht wesentlich schneller und könnte bei Deinem Html-Control das Flackern unterbinden.
Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.09.2006 ▲ |
|
|
|
|
Frank Abbing | Ich kenne noch eine weitere Möglichkeit. Die Message WM_SETREDRAW verhindert das Neuzeichnen eines Controls:
Und damit schaltest du das Neuzeichnen wieder ein:
Eventuell benötigt das Control hinterher eine WM_PAINT-Message, bzw. Repaint. |
|
|
| |
|
|
|
| Franks Variante ist IMHO deutlich besser da lockwindowupdate jederzeit von einem anderen Prozess beendet werden könnte - z.B. wenn man ein Fenster verschiebt. |
|
|
| |
|
|
|
Hubert Binnewies | Hallo..
Also in dem Punkt Neuzeichen sperren hab ich es aufgegeben. Ich konnte das Neuzeichnen erfolgreich sperren, das Blöde ist nur, wenn jetzt der Nutzer auf die wirklich dumme Idee kommt den Dialog oder die Alertbox zu verschieben.... Sieht echt grausam aus...
Die einzige Lösung ist: auf Alertboxen zu verzichten wenn man HTML Controls verwendet und einfach eigene Meldungsboxen unter XProfan zu erstellen. Dann gibt es keine Probleme. Und ich hab da ne schöne entworfen mit Blinkschrift (mit SKControl.DLL , die gefällt mir immer besser).
Bleibt nur noch das neuladen des Inhaltes des HTML Controls...
Hat da einer ne Idee (ohne ReCreate) ??
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.09.2006 ▲ |
|
|
|