![]() |
nonVCL-Klasse
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich versuche mir gerade die nonVCL-Programmierung zu vereinfach, darum schreibe ich gerade an einer Fensterklasse. Allerdings gibt es ein Problem: die im Demo-Projekt (siehe Anhang) vorhandene MessageBox wird zwar ausgegeben, allerdings bleibt das Fenster versteckt. Ich habe das ganze mal angehängt, da das ganze zwei Units sind. Chris |
Re: nonVCL-Klasse
Fehler Nr. 1:
In der DPR-Datei
Delphi-Quellcode:
Fehler Nr. 2 und 3. :
aDP.dwWndHeight := 100;
aDP.dwWndWidth := 100;
Delphi-Quellcode:
Ich glaubhier habe ich auch etwas geändert :gruebel:
function TcnvWindow.Init(aDsgnParams: TcnvDsgnParams; aClassname: PAnsiChar): boolean;
// init the Window with the given Designparameters begin Result := true; fDsgnParams := aDsgnParams; // <- Hier try self.fDsgnParams.szClassname := aClassName; fWndClass.cbSize := sizeof(TWndClassEx); if aDsgnParams.dwStyles <> 0 then fWndClass.style := fDsgnParams.dwWndStyles // <- Hier
Delphi-Quellcode:
Ich würde TcnvDsgnParams genauer Dokumentieren und Definieren.
begin
fWnd := CreateWindowEx(fDsgnParams.dwExStyles, fDsgnParams.szClassname, fDsgnParams.szWindowTitle, fDsgnParams.dwStyles, fDsgnParams.dwWndX, fDsgnParams.dwWndY, fDsgnParams.dwWndWidth, fDsgnParams.dwWndHeight, GetDesktopWindow, 0, hInstance, nil); Ich hab da noch nicht ganz durchgesehen, welcher Parameter für was ist. |
Re: nonVCL-Klasse
Du hast im Init() zwar den Klassennamen kopiert aber nicht den Rest (ist also nicht initialisiert).
Es fehlt also
Delphi-Quellcode:
Off-Topic:
self.fDsgnParams := aDsgnParams;
- Der Code-Style ist sehr gewöhnungsbedürftig. - Warum steht dort 'do not use', wenn es in der Demo benutzt wird? - Angeforderte Ressourcen werden nicht wieder freigegeben. - Fehlerbehandlung fehlt fast komplett... z.B. sollte bei GetMessage() der Rückgabewert -1 abgefangen werden!
Delphi-Quellcode:
Gruss Nico
while True do
case Integer(GetMessage(Msg, HWND(0), 0, 0)) of 0: // WM_QUIT begin // ExitCode := Msg.wParam; Break; end; -1: // Error! begin // ExitCode := -1; Break; end; else TranslateMessage(Msg); DispatchMessage(Msg); end; |
Re: nonVCL-Klasse
Hi,
@neolithos: okay. Danke. Zitat:
Zitat:
@Nico: Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Chris |
Re: nonVCL-Klasse
Schau dir noch mal genau den Record an
denn mit all den Änderungen hat es bei mir Funktioniert. Soll ich dir mal meine Änderungen zuschicken. Vielleicht habe ich ja was vergessen! |
Re: nonVCL-Klasse
Hi,
jetzt gehts... :mrgreen: Ich hatte in der DPR-Datei noch was geändert, deswegen starte das Programm überhaupt nicht. :duck: Aber mit den Änderungen klappt es wunderbar, danke... :) @Nico: dennoch würde es mich interessiert, warum du meinst mein Source hätte einen schlechten, sorry..., gewöhnungsbedürftigen Stil... :gruebel: Chris |
Re: nonVCL-Klasse
Zitat:
Liegt wohl daran, dass sich viele an Borlands ![]() Gruss Nico |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz