nonVCL Fenster erstellen-> fensterklasse wurde nicht gefu
Hallo zusammen.
Ich möchte ein nonVCL Fenster erstellen. Dazu habe ich mich hier und bei google durchgesucht und folgenden Code erstellt:
Delphi-Quellcode:
Allderings erzeugt CreateWindowEx den Fehler "Fensterklasse wurde nicht gefunden"?
procedure ShownonVCLWindow();
var FHandle : Cardinal; begin with nonVCLWindow do begin cbSize := SizeOf(TWndClassEx); style := CS_VREDRAW or CS_VREDRAW; lpfnWndProc := @DefWindowProc; hIcon := LoadIcon(0, IDI_WINLOGO); lpszClassName := 'myClass'; end; if RegisterClassEx(nonVCLWindow) = 0 then MessageBox(0, PChar(SysErrorMessage(GetLastError)), 'Error', MB_ICONSTOP or MB_OK); FHandle := CreateWindowEx(0,nonVCLWindow.lpszClassName,'myWindow', WS_VISIBLE, 100,100,50,50,0,0,hInstance,nil); if FHandle = 0 then MessageBox(0, PChar(SysErrorMessage(GetLastError)), 'Error', MB_ICONSTOP or MB_OK); end; Was mache ich flasch? Vielen Dank |
Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht
du hast das
Delphi-Quellcode:
vergessen.
FillChar(nonVCLWindow, SizeOf(TWndClassEx), 0);
Dann funktioniert deine procedure bei mir! |
Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht
Delphi-Quellcode:
Füge bitte mal diese Zeile hinzu. Der Grund kann sein das die restlichen Felder
procedure ShownonVCLWindow();
var FHandle : Cardinal; begin ZeroMemory(@nonVCLWindow, sizeof(TWndClassEx)); // <--<< with nonVCLWindow do begin cbSize := SizeOf(TWndClassEx); style := CS_VREDRAW or CS_VREDRAW; lpfnWndProc := @DefWindowProc; hIcon := LoadIcon(0, IDI_WINLOGO); lpszClassName := 'myClass'; end; if RegisterClassEx(nonVCLWindow) = 0 then MessageBox(0, PChar(SysErrorMessage(GetLastError)), 'Error', MB_ICONSTOP or MB_OK); FHandle := CreateWindowEx(0,nonVCLWindow.lpszClassName,'myWindow', WS_VISIBLE, 100,100,50,50,0,0,hInstance,nil); if FHandle = 0 then MessageBox(0, PChar(SysErrorMessage(GetLastError)), 'Error', MB_ICONSTOP or MB_OK); end; von nonVCLWindow ungültiges enthalten. |
Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht
oder so^^ ;)
|
Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank für Eure Antworten erstmal.
Leider klappen beide Varianten bei mir nicht :( Habe mal ein Screenshot mit den Werten des Records angehängt. Wer weiss Rat? |
Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht
Zitat:
Die Werte bei mir sind die selben "(48, 1, $4052E4, 0, 0, 4194304, 65551, 0, 0, nil, 'myClass', 0)". (Auser die Pointer natürlich) und bei mir läuft es... welche IDE benutzt du? welche Headers ? (ich hab nur Windows und sysutils) welches OS ? ansonsten wüst ich auch nicht mehr woran es liegen könnte... |
Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht
Okay, eins habe ich natürlich vergessen zu erwähnen :oops: Die Funktion ist in einer Dll und wird testweise im begin end Block aufgerufen...
In einer normalen Formanwendung funktioniert es bei mir auch, habe ich gerade gesehen... Wieso in der Dll nicht? Der Vollständigkeit halber: WinXP SP3 Delphi 2009 |
Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht
*push*
|
Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht
Okay ich hab's:
Man muss nach dem with-do block noch
Delphi-Quellcode:
einfügen.
nonVCLWindow.hInstance := HInstance;
So ganz verstehe ich aber nicht was da passiert. Wenn ich genau auf die Zeile einen Breakpoint mache, haben beide Variablen den Wert 0. Springe ich eine Anweisung weiter, hat nonVCLWindow.hInstance den Wert 3407872 {$340000}, HInstance hat aber immer noch 0. :shock: Was passiert da? Wie kann das? :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz