AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Non-VCL Fensterklasse

Ein Thema von Neutral General · begonnen am 3. Okt 2007 · letzter Beitrag vom 4. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Non-VCL Fensterklasse

  Alt 3. Okt 2007, 16:44
Hi,

Ich versuche mir grad eine Klasse zu bauen die mir das erstellen von Fenstern ohne die VCL vereinfachen soll.
Das Problem ist das ich das Fenster nicht zu Gesicht bekomme. Beim WndProc kommt auch soweit ich das nachverfolgen konnte nie ein WM_CREATE an.

Delphi-Quellcode:
unit uNCVLClasses;

interface

uses Windows, Messages, SysUtils;

type
  TWndProc = function (wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): LRESULT of Object; stdcall;

  TNVCLControl = class
  private
    FHandle: THandle;
    FID: HMENU;
  public
    property Handle: THandle read FHandle;
    property ID: HMENU read FID;
  end;

  TNVCLForm = class(TNVCLControl)
  private
    wc: TWndClassEx;
    FWndProc: TWndProc;
    function WndProc(wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall;
  public
    constructor Create(x,y,width,height: Cardinal);
  end;

var
  frmCount: Integer = 1;

implementation

{ TNVCLForm }

constructor TNVCLForm.Create(x, y, width, height: Cardinal);
begin
  FWndProc := WndProc;
  with wc do
  begin
    cbSize := SizeOf(TWndClassEx);
    lpfnWndProc := @FWndProc;
    hInstance := SysInit.hInstance;
    hbrBackground := COLOR_APPWORKSPACE;
    lpszClassName := Pchar('wnd' + IntToStr(frmCount));
  end;
  RegisterClassEx(wc);
  inc(frmCount);
  FHandle := CreateWindowEx(0,wc.lpszClassName,'Test',
                            WS_VISIBLE or WS_CAPTION or WS_SYSMENU or WS_SIZEBOX,
                            x,y,width,height,0,FID,hInstance,nil);
end;



function TNVCLForm.WndProc(wnd: HWND; uMsg: UINT; wp: WPARAM;
  lp: LPARAM): LRESULT;
begin
  Result := 0;
  case uMsg of
    WM_CREATE: begin
                  // nix
                end;
    WM_DESTROY: begin
                 PostQuitMessage(0);
                end;
    else Result := DefWindowProc(wnd, uMsg, wp, lp);
  end;
end;

end.
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Non-VCL Fensterklasse

  Alt 3. Okt 2007, 18:18
Mh nonVCL und SysUtils .. irgendwie nicht so effektiv ..
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Non-VCL Fensterklasse

  Alt 3. Okt 2007, 19:45
Mh ok das ist vielleicht ein Argument aber es hilft nichts wenn ich die SysUtils aus den Uses nehme.

Andere Vorschläge?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Non-VCL Fensterklasse

  Alt 3. Okt 2007, 19:45
Wie soll er da auch ankommen? Du rufst sie ja nie auf bzw. du gibst in der Fensterklassenstruktur nur eine Variable vom Typ TWndProc an aber nicht die Funktion. Btw wird das auc nicht so eiinfach gehen. Eine Methode hat immer noch den unichtbaren Self-Parameter, aber die WndProc erwartet die Parameter wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM und der zusätzliche Self-Parameter von der Methode zerschiesst dir jetzt deine WndProc.

So was habe ich übrigens schon gemacht für Dialog-Ressourcen: http://www.delphipraxis.net/internal...ghlight=dialog
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Non-VCL Fensterklasse

  Alt 3. Okt 2007, 20:08
Mh hab mir den Dialog runtergeladen, werde aber nicht schlauer. Das Problem ist halt das ich en Methodenpointer habe. Wie wandel ich das jetzt um, bzw. was soll ich machen? Konnte aus deinen Hinweisen leider nichts machen.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Non-VCL Fensterklasse

  Alt 3. Okt 2007, 20:14
Du musst für jede Objetkinstanz eine Funkktion in den Hauptspeicher zu Laufzeit implementieren (so wie hier)

Edit: Für die VCL macht das übrigens die Classes.MakeObjectinstance.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Non-VCL Fensterklasse

  Alt 3. Okt 2007, 20:27
Zitat von Neutral General:
Mh hab mir den Dialog runtergeladen, werde aber nicht schlauer.
Dann solltest du dir auch mal den Sourceode angucken. Und in der Readme befindet sich ein Link, wie es funktioniert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Non-VCL Fensterklasse

  Alt 3. Okt 2007, 20:48
Hi,

Danke es hat funktioniert Werde morgen mal gucken das ich verstehe wies funktioniert.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

Re: Non-VCL Fensterklasse

  Alt 3. Okt 2007, 23:02
Aber interessantes Konzept. Würde mich freuen, wenn du deine Unit irgendwann hier vorstellen würdest.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

Re: Non-VCL Fensterklasse

  Alt 4. Okt 2007, 00:11
Zitat von Zacherl:
Mh nonVCL und SysUtils .. irgendwie nicht so effektiv ..
Wieso? Er will ja kein nonRTL Programm, sondern ein nonVCL Programm.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:32 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