Ich muss ein Formular erstellen (mit CreateWindow
functions) ohne Hilfe von VCL
(oder einem visuellen Steuerelement) nur mit der Windows-API.
Dieses Formular wird ein InputBox
, ein Button
und ein BitMap
(wie TImage
) haben.
Ich konnte keine Probe im Internet finden. Kennt jemand einen guten Platz, wo ich neben MSDN eine Probe herunterladen kann?
Kennt jemand einen guten Platz, wo ich neben MSDN eine Probe herunterladen kann?
Ich habe die folgenden Beispiele mit einer kursiven Websuche gefunden:
Ich bin mir sicher, dass es noch viel mehr gibt, aber diese beiden sollten dich beginnen.
Um jedoch mit einer rohen Win32-GUI überallhin zu kommen, brauchen Sie wirklich ein starkes Verständnis des Windowing-Frameworks. Dafür empfehle ich Programmierfenster von Charles Petzold < Das Buch, von dem alle Old-School-Windows-1.0-Programmierer damals gelernt haben. Ja, es ist alt, aber es deckt die Grundlagen, die Sie brauchen, so gut wie immer.
Peter Below hat einen Thread Splashscreen für Delphi geschrieben, der nur Windows-API verwendet.
Sehen Sie, wie es gemacht wird:
%Vor% Diese Komponente kann ein Bild und eine Nachricht in einer Statusleiste nur mit der Windows-API anzeigen. Ein Hintergrundthread wird verwendet, um das Fenster anzuzeigen, wenn Sie die Methode Show
aufrufen. Die einzige Eigenschaft, die danach geändert werden kann, ist das Bild, vorausgesetzt, es hat die gleiche Größe wie das Original.
Wenn Sie ohne VCL auskommen möchten, empfehlen wir Ihnen, die Key Objects Library zu überprüfen, damit Sie leichtgewichtige GUI-Apps erstellen können.
Ich weiß, dass MadExcept gerade WinAPI verwendet, um sein Ausnahmedialogfeld zu erstellen, weil es in der Lage sein muss, es von anderen Threads als dem Hauptdialogfeld anzuzeigen, und die VCL kann das nicht tun. MadExcept ist kostenlos, aber leider ist der Code dazu nicht. Aber es ist auch nicht zu teuer. Das könnte also eine Quellcode sein, um zu studieren, wenn Sie es haben. (Und wenn Sie das nicht tun, sollten Sie zumindest einen Blick darauf werfen. Es ist das nächstbeste, um einen Debugger tatsächlich mit dem System eines Benutzers verbinden zu können, wenn ein Fehler auftritt.)