Deutsch
Hilfedateien

CHM-Hilfedatei: XProfan X2

Hilfedatei (CHM)- Bugs

Fehler in der Hilfe: Einführung

Fehler in der Hilfe: Einführung Themen 28 - 28.14

 

Jörg
Sellmeyer
28 - XProfan für Fortgeschrittene
- oder für Programmierer, die etwas tiefer in die materie eindringen wollen.

28.1 - Die Programmierung von Bildschirmschonern
- Der XProfan-Linker trägt das Notwendige in den Header des Programmes ein und gibt ihm die Endung ".SCR".

- und bei beliebigem Tastentdruck

- 32 - Das Fenster benutzt den Bildschirmhintergrund als Hintergrund.
Auch wenn es eine Aufzählung ist - die anderen Punkte klingen nach vollständigen Sätzen, nur der hier ist so verstümmelt 

- Die Auflösung des Bildschirmes erfahren wir über die Systemvariablen %MaxX und %MaxY.

- Um den Mauszeiger verschwinden zu lassen, setzen wir den Befehl ShowCursor ein.

- Vor dem Ende des Programmes muss der Mauszeiger wieder eingeschaltet werden, es sei denn, sie wollen Windows ausschließlich mit der Tastatur bedienen.

- Als nächstes verharrt das Programm solange in der While-Schleife, bis ein Tastendruck oder eine Mausbewegung erfolgt.

- Um dies festzustellen benutzen, wir die Systemvariable %GetInputState.

- Mit %ParCount wird überprüft ob mindestens ein Parameter vorliegt.

- oder ob er gar ein Aquarium simuliert oder Toaster über den Bildschirm fliegen läßt ...

- '-Die Bildschirmaufloesung wird auf 800 mal 600 Pixel geaendert-----

28.2 - Neuzeichen selbst übernehmen
- als ob der Windowsbildschirm ein dreidimensionales Vor- und Hintereinander kennt,

- Was Windows macht ist folgendes: Es überwacht, ob ein Fenster neugezeichnet werden müßte und sendet dem Fenster

- benötigt das XProfan-Programm keine Kenntnis über diese Aufforderung.

- Dialogfensters WaitInput verläßt und die Systemvariable
Du hast so oft dass und muss nach neuer RS verwendet, dass Du auch lasst und passt immer benutzen solltest 

- immer an die Größe des Haupfensters angepaßt haben möchte.

- In diesem Fall wird die WindowsBotschaft wm_Paint,

- Die Routine, die Beim Auftreten einer wm_Paint-Meldung aufgerufen wird,

28.4 - Messageverwaltung selbst übernehmen
- die Ressourcen genutzt und Messages verschickt werden können.

- Sobald diese eintrifft, werden die Systemvariablen

- Hier ist im Zweifelsfalle Ausprobieren angesagt.
Alternativ: In der Zweifelsfalle... 

- Im 32-Bit-Windwos sind beide Parameter 32-Bit breit,

- beiden Versionen beide Systemvariablen als Longint- Systemvariablen ausgelegt.
Hier könnte man noch überlegen, ob die Schreibweise LongInt zu bevorzugen ist. Außerdem sollte nach dem Longint- kein Leerzeichen stehen. 

- Es können auf diese Weise auch selbsterzeugte Messages behandelt werden.
Hier sollte auch noch ein Verweis auf UserMessages stehen , auch wenn im nächsten Kapitel ausführlich darauf eingegangen wird. 

28.6 - Notify-Message
- Die Nachricht WM_NOTIFY informiert ein Fenster darüber, dass ein enthaltenes Steuerelement ein Ereignis ausgelöst hat.

28.7 - Zur Verwendung von DLLs
- Um sie aus dem Speicher zu entfernen, ist der Befehl FreeDLL zu verwenden.

28.8 - Druckerkontext / Drucken mit API
- Über die Systemvariable &PDC läßt sich der Druckerkontext auslesen

- '-Druckausgabe auf ausgewaehltem Drucker
Hat es einen bestimmten Grund, dass Du in Kommentaren keine Umlaute verwendest? 

- Mit Ausführung des Programmes erscheint der Druckerauswahldialog
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
29.03.2012  
 




Jörg
Sellmeyer
28.10 - CallBack-Funktionen
- Und wenn es doch nicht ausreicht, kann man einen benutzten Callback-Platz auch wieder freigeben,

- Natürlich kann @ProcAddr auch überall verwandt werden, wo die Adresse einer Prozedur benötigt wird.

- da XProfan derzeit nicht in der Lage ist, zwei Codeteile in einem Prozess parallel auftzurufen. im obigen Beispiel ist diese Bedingung ja gegeben, da die Prozedur "Fonntliste" ja von der API-Funktion "~EnumFontFamilies" aufgerufen wird und erst nach Beendigung der API-Funktion das XProfan-programm weiterläuft.

28.11 - Reguläre Ausdrücke in XProfan
- @Translate$

- (Abkürzung: "RegEx" von "Regulare Expression")

- Hier ist allerdings zu beachten, daß einige Zeichen,

- Normalerweise, werden diese, wie auch Ersatzzeichen in XProfan-Strings, mit dem "\" eingeleitet.

- habe ich für Reguläre Ausdrücke in XProfan das "~" als Escapezeichen gewählt.
Vielleicht besser: ... in XProfan die Tilde (~) als ... 

- im Text suchen möchte, müßte ich

- Das Potenzzeichen am Anfang des Musters sorgt dafür, daß nur ein Vorkommen des Musters am Anfang des Textes gefunden wird, beim Dollarzeichen muß es am Endes des Textes stehen.

- Der vorhergehende Ausdruck bzw. das vorhergehende Zeichen muß in einer bestimmten Anzahl vorkomen.

- der Ausdruck muß 0 oder 1 mal vorkommen: "10?" findet "1" und "10", da das Zeichen "0" ein- oder keinmal vorkommen muß.

- der Ausdruck muß mindestens 1 mal vorkommen: "10+" findet also z.B. "10", "100" etc, aber nicht "1"
noch mehrmals "muß" im weiteren Text. Ich würde das unbedingt korrigieren, da so eine Programmiersprache ja auch immer eine gewisse Aktualität ausstrahlen sollte. 

- (?i) schaltet die Gleichheit von Groß- und Kleinbuchstaben ein,

- (von mir an XProfan angepaßte)

28.12 - SubClassing mit XProfan
- Jedes Fenster oder Dialogelement in Windows hat eine Fensterprozedur, welche die die Messages verarbeitet, die an dieses Fenster geschickt werden.
lieber einmal "welche" benutzen 

- Auf diese Fensterprozedur hat der XProfan-Programmierer in der Regel keinen Einfluß,

- aber wir können die Messages für ein (oder mehrere) Fenster ersteinmal erst einmal zu einer eigenen Prozedur umleiten, in dem indem wir der Fensterklasse unsere eigene Prozedur als Fensterprozedur unterschieben.
[...] 

- zum Schluß an die Original Windowsprozedur weiter,
entweder Original-Windowsprozedur oder originale Windowsprozedur 

- In XProfan gibt es eine spezielle Prozedur für das das Bearbeiten der umgeleiteten Messages:

- Ganz wichtig ist hier die Funktion Set("WinProc", ...), denn diese legt fest,

- Normalerweise muß die Windowsprozedur für alle Fälle aufgerufen werden,

- ungehört an die ursprüngliche Windows-Prozedur weitergeleitet werden

- Das ist wichtig, wenn wir mehrere Fenster/Dialogelemente Ssubclassen.

- Und damit das Abfragen etwas einfacher wird, gibt es eine neue Funktion:

- Soll die Message nach der Behandlung nicht mehr von der ursprünglichen Windows-Prozedur behandelt werden,

28.13 - File-Mapping - Speicherdateien
- diese Speicherdatei zugreifen, um sie dann mit @FileMap("Map", ...) auf einemn passenden Bereich zu legen.
oder: einem passenden Bereich abzulegen 

- Für mehrere Variablen empfiehlt sich, eine Struktur zu verwenden.

- Das Programm, das die Speicxherrdatei erzeugt, sollte die gleichen Strukturen verwebnden, wie die Programme, die sie öffnen und nutzen.

- Das Beispiel funktioniert sowohl compiliert als auch im Interpreter.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
30.03.2012  
 




Jörg
Sellmeyer
28.14 - Multiprozessing mit XProfan
- Es war schon immer möglich, aus einem XProfan-Programm einen weiteren Prozess zu startenn, ohne dass deswegen eine weitere komplette EXE-Datei notwendig wäre.

- Ein Programm, dass aus welchen Gründen auch immer mehrere Prozesse benötigt, benötigt also nur eine EXE-Datei und die anderen Prozesse können als compilierte Module (im Normalfall Dateien mit der Endung .prc) beigegeben werden.
Würde ich einfach rauslassen. Macht den Satz unnötig kompliziert. 

- (Schon das Beispielprogramm DEMO.EXE der ersten öffentlichen Profan-Version (Profan 1.3) nutzte diese Technik, damals noch unter dem 16-Bit Windows 3.0)
Ist doch super - warum also in Klammern verstecken? 

- In diesem Fall ist kein Zugriff auf globale Variablen, Konstanten oder Strukturen des Programmes möglich.
kommt noch mehrmals vor 

- Im Interpreter also der Interpreter (in der Regel PROFAN.EXE) selbst), beim fertigen Programm dessen EXE.)

- Das Modul wird als eigener Prozess asynchron gestartet,

- Das Ergebnis ist ist die Prozess-ID des gestarteten Prozesses.

-
KompilierenMarkierenSeparieren
Proc SetTitleTime

    Parameters handle&
    Var ende% = 0

    WhileNot ende%

        SetText handle&, dt("getDate", 6)
        case GetText$(handle&) = "" : ende% = 1
        Sleep 100

    EndWhile

EndProc

Randomize
WindowStyle 24 + 512
Window 100,550-500,200
pExec("|SetTitleTime", %hWnd)
Var ende% = 0

WhileNot ende%

    Waitinput
    case %key = 2 : ende% = 1

EndWhile

End

Die Codes sind alle sehr uneinheitlich formatiert. Es sieht sicher besser aus, wenn die Schreibweisen den Begriffen in der Hilfe folgen. Ich hab hier mal alle Schreibweisen umgestellt. Wenn Dir was dran liegt, kann ich später mal alle Quelltexte daraufhin durchgehen. Viel später... 

- kann auch mit der Finktion isWindow(handle&) festgestellt werden.

- Eine neue Containerfunktion process() erlaubt den erweiterten Umgang mit Prozessen:
Ich fände es sinnvoller (und professioneller!), eine Schreibweise durchzuziehen. 

- Mit "Suspend" wird der Prozess wird sofort angehalten.

- und auch das sendende Programm bleibt hängen.

- Ein Beispiel für die drei Funktionen "Kill", "Suspend" und "Resume" findet sich weiter unten im Beispiel 3.

- Programme, die "Resume" oder "Suspend" verwenden, sollten beim Start prüfen, dass mindestens Windows2000 das aktuelle Betriebssystem ist.

- Mit "SetPriority" kann die Priorität eines Prozesses auf niedrig, noprmal oder hoch eingestellt werden.

- Ist das Eregebnis 0, war es kein passendes Handle!

- Prozessübergreifender Zugriff auf Controlls

- so dass sodass (empfiehlt der Duden)  eine Adresse in mehreren Prozessen Gültigkeit besassß.
Du bist echt lustich...

- einen eigenen Adressraum, so dass eine Addresse nur im eigenen Prozess gültig ist.
s.o. Alternativ das Komma versetzen

- Da nun z.B. beim Schreiben von Text in ein Control lediglich die Adresse des Textes übermittelt wird, würde das nun nicht mehr funktionieren, wenn ein SetText oder @AddString() nun auf ein Control-Handle eines anderen Prozesses angewandt würde.

- Im Falle der Standardcontrolls wie Edit,

- Synchronder Aufruf eines XProfan-Moduls oder einer einzelnen XProfan-Prozedur

- Das Programm waertet also mit der Ausführung, bis das Modul oder die Prozedur abgearbeitet ist.

- der mit End n% zurückgegebene Exit-Code des Programmes.

- Das Hauptprogramm startet die 9 Prozeduren und gibt als letzten Parameter das Offset mit,
Offset wird eher als maskulinum interpretiert. Ist zwar im Duden noch nicht angekommen aber sonst findet man überall "der Offset" 

- Ist einer der Prozesse geschlossen worden, wird das ebenfallss angezeigt.

- Hier werden entsprechende Textfelder im Hauptprogramm erzeugt

- Der erste Prozeß ("A") kann hier über Buttons des Hauptprozesses angehalten, wieder gestartet und beendet werden.

- 'alle erzeugten Processe beenden
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
30.03.2012  
 




RGH
Jörg Sellmeyer (29.03.12)


Hat es einen bestimmten Grund, dass Du in Kommentaren keine Umlaute verwendest?


Einige Programmcodes sind nicht von mir, sondern z.B. Von Stefan Schnell. Und da es professionelle Entwicklungsumgebungen gibt, die sich mit Umlauten - etwa bei der Suche - schwer tun, haben sich manche Programmierer angewöhnt, auch in Kommentaren Umlaute zu vermeiden. Wer außerdem Java z.B. auf unterschiedlichen Betriebssystemen programmiert wird wegen der unterschiedlichen Zeichensätze mit Umlauten in Quellcodes auch keine Freude haben.

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
30.05.2013  
 




RGH
Jörg Sellmeyer (30.03.12)

Die Codes sind alle sehr uneinheitlich formatiert. Es sieht sicher besser aus, wenn die Schreibweisen den Begriffen in der Hilfe folgen. Ich hab hier mal alle Schreibweisen umgestellt. Wenn Dir was dran liegt, kann ich später mal alle Quelltexte daraufhin durchgehen. Viel später... 


Da die Codes teilweise von anderen Autoren stammen und manchmal aus unterschiedlichen "Schaffensperioden", sind sie eben nicht einheitlich. Gewiss wäre eine gewisse Einheitlichkeit schön ... aber dazu fehlt einfach die Zeit.- Vielleicht schreibe ich mal einen "Code-Beautifier", der das automatisch macht und dabei gleich jegliche veraltete Syntax ausradiert ...

Gruß
Roland
 
XProfan X2
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
30.05.2013  
 



Zur Funktionsreferenz


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.453 Betrachtungen

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Jörg Sellmeyer (3x)
RGH (2x)


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