![]() |
[Non-VCL] System kann Datei nicht finden bei RegisterClassEx
Warum bekomme ich bei folgendem Code die Fehlermeldung
Zitat:
Ich wollte in NonVCL einsteigen, hab' mir Luckie's Tut angeschaut, und dann sowas ... :cry: Code grösstenteils direkt ausm Tut übernommen ...
Delphi-Quellcode:
program Project1;
uses Windows, SysUtils, Dialogs; var WindowClass: TWndClassEx; Handle: Word; function WndProc(hWnd: HWND; uMsg: UINT; wParam: wParam; lParam: LParam):lresult; stdcall; begin Result := 0; Result := DefWindowProc(hWnd, uMsg, wParam, lParam); {vereinfacht, da Fehlerunabhängig ... oder ?} end; begin WindowClass.cbSize := SizeOf(TWndClassEx); WindowClass.Style := CS_HREDRAW or CS_VREDRAW; WindowClass.lpfnWndProc := @WndProc; WindowClass.cbClsExtra := 0; WindowClass.cbWndExtra := 0; WindowClass.hbrBackground := COLOR_APPWORKSPACE; WindowClass.lpszMenuName := nil; WindowClass.lpszClassName := 'WndClass'; WindowClass.hIconSm := 0; WindowClass.hInstance := hInstance; WindowClass.hIcon := LoadIcon(hInstance, MAKEINTRESOURCE(100)); WindowClass.hCursor := LoadCursor(0, IDC_ARROW); SetLastError (0); Handle := RegisterClassEx(WindowClass); showmessage (SysErrorMessage (GetLastError)); UnregisterClass (PChar (Handle), HInstance); end. |
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
Die Variable Handle ist zu klein. Ich bin mir ziemlich sicher, dass ich sie nicht als WORD deklariert habe, sondern entweder als DWORD oder THandle. Aber ob es das ist, weiß ich nicht.
|
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
Nein, das ist es nicht ... Der Fehler tritt sowohl bei LongWord, als auch bei THandle (was nix anderes ist) auf.
In deinen Beispiel verarbeitest du den Rückgabewert von Registerclassex nicht, sondern rufst createwindowex mitt dem klassennamen, statt dem atom auf, aber ob es daran liegt ... :gruebel: |
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
Moin Julius,
schau Dir doch mal die Doku zu RegisterClassEx an. Wenn die Funktion fehlschlägt ist der Rückgabewert 0. Da er dies in diesem Falle nicht ist, ist der Wert von GetLastError uninteressant, bzw. er sagt nichts aus. |
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
Hi,
Habe gerade das selbe Problem. Versuche eine Klasse zu registrieren, bekomme aber die selbe Meldung wie jfheins. Gibt es da keine Lösung? Muss doch. Mich wunderts vorallem was da für eine Datei gemeint ist o.O Das ganze hat doch nichts mit Dateien zu tun... Gruß Neutral General |
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
Welchen Wert bekommst du von RegisterClassEx?
|
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
GetLastError gibt in dem Beispiel oben 2 zurück. Keine Ahnung was das soll. :gruebel:
|
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
Ich habe nicht nach GetLastError gefragt.
Zitat:
Zitat:
|
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
RegisterClassEx liefert einen Wert > 0 zurück. zB.: 49558 ;)
|
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
Dann ist der Wert von GetLastError unbestimmt, weil die Funktion erfolgreich war.
Delphi-Quellcode:
So wäre es richtig.
Handle := RegisterClassEx(WindowClass);
if Handle = 0 then ShowMessage (SysErrorMessage (GetLastError)); |
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
Oda so: ;)
Delphi-Quellcode:
program SoUndSo;
uses Windows, Messages, SysUtils; // use SysUtils for Debug // var WndClassEx: TWndClassEx; // vereinfacht... function WndProc(hWnd: HWND; uMsg: UINT; wParam: wParam; lParam: LParam):lresult; stdcall; begin Result := DefWindowProc(hWnd, uMsg, wParam, lParam); end; begin Zeromemory(@WndClassEx, SizeOf(TWndClassEx) ); With WndClassEx do begin cbSize := SizeOf(WndClassEx); Style := CS_HREDRAW or CS_VREDRAW; lpfnWndProc := @WndProc; hbrBackground := COLOR_APPWORKSPACE; lpszMenuName := nil; lpszClassName := 'WndClass'; hInstance := hInstance; end; if RegisterClassEx(WndClassEx) = 0 then MessageBox(0, PChar(SysErrorMessage(GetLastError)), '!', MB_OK); UnregisterClass (WndClassEx.lpszClassName, HInstance); end. |
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
Das < kannst du weglassen - verwirrt nur.
|
Re: [Non-VCL] System kann Datei nicht finden bei RegisterCla
Zitat:
sind sehr sehr selten kleiner Null. ;) |
AW: [Non-VCL] System kann Datei nicht finden bei RegisterClassEx
in welchem Unit-Gültigkeitsbereich liegt den
Delphi-Quellcode:
in Delphi XE3 ?
UnregisterClass (PChar (Handle), HInstance);
|
AW: [Non-VCL] System kann Datei nicht finden bei RegisterClassEx
Zitat:
![]() edit: upps, das ist die ja gar nicht :) |
AW: [Non-VCL] System kann Datei nicht finden bei RegisterClassEx
Mach Dir nichts drauss, in die Falle bin ich auch gegangen ...
|
AW: [Non-VCL] System kann Datei nicht finden bei RegisterClassEx
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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