AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi nonVCL Fenster erstellen-> fensterklasse wurde nicht gefuden
Thema durchsuchen
Ansicht
Themen-Optionen

nonVCL Fenster erstellen-> fensterklasse wurde nicht gefuden

Ein Thema von Viktorii · begonnen am 4. Nov 2008 · letzter Beitrag vom 6. Nov 2008
Antwort Antwort
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

nonVCL Fenster erstellen-> fensterklasse wurde nicht gefu

  Alt 4. Nov 2008, 10:15
Hallo zusammen.

Ich möchte ein nonVCL Fenster erstellen. Dazu habe ich mich hier und bei google durchgesucht und folgenden Code erstellt:

Delphi-Quellcode:
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;
Allderings erzeugt CreateWindowEx den Fehler "Fensterklasse wurde nicht gefunden"?
Was mache ich flasch?
Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht

  Alt 4. Nov 2008, 10:49
du hast das FillChar(nonVCLWindow, SizeOf(TWndClassEx), 0); vergessen.
Dann funktioniert deine procedure bei mir!
mit freundlichen Grüßen,
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht

  Alt 4. Nov 2008, 10:51
Delphi-Quellcode:
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;
Füge bitte mal diese Zeile hinzu. Der Grund kann sein das die restlichen Felder
von nonVCLWindow ungültiges enthalten.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht

  Alt 4. Nov 2008, 10:52
oder so^^
mit freundlichen Grüßen,
Andreas
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#5

Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht

  Alt 4. Nov 2008, 11:11
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?
Miniaturansicht angehängter Grafiken
createwindow_461.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht

  Alt 4. Nov 2008, 12:03
Zitat von Viktorii:
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?
Ich hab dein Quellcode 1 zu 1 kopiert in mein BDS 2006 Projekt.
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...
mit freundlichen Grüßen,
Andreas
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#7

Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht

  Alt 4. Nov 2008, 12:33
Okay, eins habe ich natürlich vergessen zu erwähnen 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
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#8

Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht

  Alt 6. Nov 2008, 09:40
*push*
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#9

Re: nonVCL Fenster erstellen-> fensterklasse wurde nicht

  Alt 6. Nov 2008, 14:11
Okay ich hab's:

Man muss nach dem with-do block noch

  nonVCLWindow.hInstance := HInstance; einfügen.

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.

Was passiert da? Wie kann das?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 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