![]() |
1400 Error beim Erstellen eines Fensters via API
Hey Leute,
wie ihr evtl. an der Zeit seht sitze ich schon länger an dem Problem. Ich lasse mir via API ein Fenster erstellen bzw. versuche es. Ich kriege immer die Nachricht : 'Fenster konnte nicht erzeugt werden 1400' bei folgendem Code :
Delphi-Quellcode:
Ich konnte leider keine andere Lösungen finden wo Delphi und die API genutzt wird. Auch die *Ex-Variante funktioniert nicht und wirft den gleichen Fehler.
procedure TSForm.Show();
var msg : TMsg; begin with self.windowClass do // private und vom Typ TWndClass begin Style:= CS_HREDRAW or CS_VREDRAW; lpfnWndProc:= @TSForm.WindowProcedure; // protected und mit stdcall versehen cbClsExtra:= 0; cbWndExtra:= 0; hbrBackground:= COLOR_APPWORKSPACE; lpszMenuName:= nil; lpszClassName:= 'TestSWindow'; hInstance := hInstance; hIcon := LoadIcon(0, IDI_WINLOGO); hCursor := LoadCursor(0, IDC_ARROW); end; if RegisterClass(self.windowClass) = 0 then ShowMessage('Fensterklasse konnte nicht registriert werden ' + IntToStr(GetLastError)); self.hwnd {private HWND} := CreateWindow('TestSWindow', PChar(self.appName) {public und vom Typ String}, WS_CAPTION or WS_VISIBLE or WS_SYSMENU, (GetSystemMetrics(SM_CXSCREEN) - self.w {private, Integer und im Create auf 400 gesetzt}) div 2, (GetSystemMetrics(SM_CYSCREEN) - self.h{private, Integer und im Create auf 500 gesetzt}) div 2, self.w, self.h, 0, 0, hInstance, nil); if self.hwnd = 0 then ShowMessage('Fenster konnte nicht erzeugt werden ' + IntToStr(GetLastError)); // is ja egal ... komm ich nicht mal hin ExitCode := msg.wParam; end; Ich rufe das ganze dann so auf:
Delphi-Quellcode:
Ich hoffe ihr könnt mir da irgendwie helfen :(
program API;
uses USForm in 'USForm.pas'; var win : TSForm; begin win := TSForm.Create(); win.appName := 'WinAPITestApp'; win.Show(); win.Close(); // unregistriert die Klasse end. |
AW: 1400 Error beim Erstellen eines Fensters via API
Zitat:
um es mal etwas verständlicher zu machen: ![]() ![]() oder man läßt es sich übersetzen ![]() oder gleich anzeigen ![]() RegisterClass ... Und was macht man, wenn man mal zwei Fenster dieser Art anzeigen möchte? |
AW: 1400 Error beim Erstellen eines Fensters via API
Zitat:
Das Problem mit dem doppelten Fenster ist geklärt, weil ich nur ein Fenster und einen Mutex verwende. Aber danke für den Hinweis. Werde ich mir merken ;) |
AW: 1400 Error beim Erstellen eines Fensters via API
Zitat:
|
AW: 1400 Error beim Erstellen eines Fensters via API
Vermischt du da irgend wie VCL und nonVCL?
|
AW: 1400 Error beim Erstellen eines Fensters via API
Zitat:
Zitat:
|
AW: 1400 Error beim Erstellen eines Fensters via API
grmmm... :gruebel:
Du erstellst ein Window mit einem Handle das schon existiert? self.hwnd und auch noch mit einer existierenden Classe? self.windowClass gruss |
AW: 1400 Error beim Erstellen eines Fensters via API
Zitat:
|
AW: 1400 Error beim Erstellen eines Fensters via API
Für mich sieht das aus wie Luckie schon sagt
Da wird versucht von TForm (existierendes Window) ein neues Window zu erstellen. Kann mit den bißchen Quelltext ohne zu sehen wie die Classe aufgebaut ist. Auch nur Raten. gruss |
AW: 1400 Error beim Erstellen eines Fensters via API
Zitat:
Delphi-Quellcode:
type
TSForm = class private hwnd : HWND; windowClass : TWndClass; w, h : Integer; function getAppData() : String; procedure init(); procedure finale(); procedure keypress(c : Char); procedure ShowError(ErrorText: PChar); published function WindowProcedure(HWND: HWND; uMsg: UINT; wParam: wParam; lParam: lParam): lResult; stdcall; public appName : String; constructor Create(); procedure Show(); destructor Close(); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 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