Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Fenster erstellen mit TP für Windows? (https://www.delphipraxis.net/55159-fenster-erstellen-mit-tp-fuer-windows.html)

Rastaman 17. Okt 2005 14:44


Fenster erstellen mit TP für Windows?
 
Moin. Hab da n kleines Problem, und zwar wollt ich mit Turbo Pascal für Windows n Fenster erstellen.
Soweit so gut, es wird kompiliert, aber beim Ausführen sagt er, dass die EXE eine Schutzverletzung bei 0001:0033 ausgelöst hätte :wall:
So hab ichs gemacht:

Delphi-Quellcode:
program APPNAME;

uses
  WinCrt, WinProcs, WinTypes;

var

  WndClass: TWndClass;
  msg: TMSG;

function WNDPROC(hwnd: HWND; uMsg, wParam: WORD; lParam: LongInt): LongInt;
begin
  WNDPROC := DefWindowProc(hwnd, uMsg, wParam, lParam);
end;
begin

  WndClass.style := CS_OWNDC;
  WndClass.lpfnWndProc := @WNDPROC;
  WndClass.cbClsExtra := 0;
  WndClass.cbWndExtra := 0;
  WndClass.hInstance := hInstance;
  WndClass.hIcon := 0;
  WndClass.hCursor := LoadCursor(hInstance, IDC_ARROW);
  WndClass.hbrBackground := COLOR_WINDOW;
  WndClass.lpszMenuName := nil;
  WndClass.lpszClassName := 'WndClass';
  RegisterClass(WndClass);


  CreateWindowEx(WS_EX_DLGMODALFRAME, 'WndClass',
                 'Bruchrechnen',
                 WS_VISIBLE or WS_CAPTION or WS_SYSMENU,
                 0, 0,    
                 500, 500,
                 0, 0, hInstance, nil);
  while True do
  begin
    if not GetMessage(msg, 0, 0, 0) then
      exit;
    TranslateMessage(msg);
    DispatchMessage(msg);
  end;
end.
stdcall gibts bei Turbopascal nicht :wall:

Rastaman 17. Okt 2005 17:37

Re: Fenster erstellen mit TP für Windows?
 
Naja gut, ich habs geschafft n Button in die Konsole zu pflanzen, das is ja auch schon was :mrgreen:
Allerdings hab ich jetz kp wie ich auf die Ereignisse reagieren soll :wall:

//Edit: Hier ma der Code:

Delphi-Quellcode:
program bla;
uses WinCrt, WinProcs, WinTypes;
var
  wnd, wnd2: HWND;
begin
  wnd := FindWindow('TPWinCrt', nil);
  wnd2 := CreateWindow('EDIT', ':D',
                       WS_CHILD or WS_VISIBLE
                       or WS_BORDER or ES_MULTILINE,
                       20, 20, 60, 60,
                       wnd, 4, hInstance, nil);
  ReadLn;
  SendMessage(wnd2, WM_SETTEXT, 0, Integer(PChar('HALLO')));
  ReadLn;
end.
Das Edit wird auch auf der Konsole erstellt, aber WM_SETTEXT funktioniert nicht :?

Rastaman 19. Okt 2005 15:17

Re: Fenster erstellen mit TP für Windows?
 
Ich denk ma darauf weiß eh keiner ne Antwort, aber n letzter Versuch: *PUSH* :duck:

franktron 19. Okt 2005 15:23

Re: Fenster erstellen mit TP für Windows?
 
Prinzipel genau wie in Delphi du must nur die ereignisse abfragen such mal hier im Forum da müsste was zu finden sein wie man Nachrichten abfangen und auswerten kann

Rastaman 19. Okt 2005 15:39

Re: Fenster erstellen mit TP für Windows?
 
Zitat:

Zitat von franktron
Prinzipel genau wie in Delphi du must nur die ereignisse abfragen such mal hier im Forum da müsste was zu finden sein wie man Nachrichten abfangen und auswerten kann

:shock:
Es geht doch nicht ums Ereigniss auswerten, das würde ja in die WNDPROC Funktion kommen, aber ich denk mal da haperts.
Wie gesagt: Compilieren: Ja, Ausführen: Nein...Fehler s.o
Es geht ums erstellen und nicht darum was auszuwerten, das ist erstmal zweitranging.

//Edit: Ich denke ich könnte die Turbopascal Version anhängen an den Post, oder :gruebel:
Ich meine mich entsinnen zu können, dass mein Lehrer gesagt hat, dass die Version so veraltet ist, dass sie kostenlos ist.
Ist ja auch im Netz nirgends zu finden (nichtmal Borland.de). Also ich will mir lieber die Bestätigung der Mods vorher holen, bevor ich das anhänge.

Sharky 19. Okt 2005 16:16

Re: Fenster erstellen mit TP für Windows?
 
Zitat:

Zitat von Rastaman
...Ich meine mich entsinnen zu können, dass mein Lehrer gesagt hat, dass die Version so veraltet ist, dass sie kostenlos ist.

Hai Rastaman,

sage deinem Lehrer mal einen lieben Gruß. Er sollte sich gerade als Lehrer erst informieren bevor er solche Dinge von sich gibt ;-)
Nur weil ein Programm alt ist bedeutet es nicht das die Lizenzverträge nicht mehr gültig sind.
Soweit ich weiss gibt es bei Borland "nur" TurboPascal 5.5 kostenlos zum Downloaden.

Luckie 19. Okt 2005 17:17

Re: Fenster erstellen mit TP für Windows?
 
Guck dir mal meine nonVCL Tutorials an: http://delphitutorials.luckie-online.de

Rastaman 19. Okt 2005 18:06

Re: Fenster erstellen mit TP für Windows?
 
Die hast du mir ja schon des öfteren ans Herz gelegt :zwinker:
Leider funktioniert das so in TPW nicht. Es gibt keine Windows und keine Messages Unit.
Die Units heissen WinCrt (Für Text Ein- /Ausgabe, muss sein sonst geht Programm sowieso sofort aus), WinProcs und WinTypes.
Er kennt auch TWndClassEx nicht, deswegen musses TWndClass sein.
Genau so mit CreateWindowEx und FindWindowEx (Findwindow is ja irrelevant, ich sags nur so :)).
Auch wParam und lParam gibt es nicht, deswegen habe ich es ja schon nach der Turbopascal Hilfe so umgeschrieben.
Normalerweise benutzt man ja stdcall hinter der Funktion, aber das gibt es bei Turbopascal nicht.
Es wird eben auch vernünftig kompiliert, aber beim Start dann halt... :(
Ist wie als würd man stdcall nicht einbinden bei Delphi.

//BTW: Ich hab ja auch schon Buttons, Edits etc. auf dem Konsolenfenster erstellen können, weil ich den Namen
der Fensterklasse zu Hause nachgeguggt habe (TPWinCrt), nur halt...wie soll man ohne das Hauptfenster auf Aktionen reagieren :gruebel:

jbg 19. Okt 2005 18:22

Re: Fenster erstellen mit TP für Windows?
 
Zitat:

Zitat von Rastaman
Normalerweise benutzt man ja stdcall hinter der Funktion, aber das gibt es bei Turbopascal nicht.

In TurboPascal gab es kein register als wird, wie der Programmiersprachennamen bereits preisgibt, die Aufrufart pascal benutzt, die dem stdcall entspricht.

Es ist zwar schon eine ganze Weile her, dass ich ein Win16 Programm geschrieben habe, aber gibt es da nicht sowas wie callback (oder war das BC++ ?)
Aber die WndProc muss auf alle mit far gekennzeichnet werden (ansonsten kennzeichnet TP sie mit Near).

Rastaman 19. Okt 2005 18:30

Re: Fenster erstellen mit TP für Windows?
 
YOU ARE THE MAN :mrgreen: :thumb:
Perfekt, bestens, SUPA !!
Funzt alles. Hatte vorher schon versucht virtual und all son Kram dran zu hänge, aber das hat nich geklappt :mrgreen:

//Edit: Is ja der Hammer, nich mal die Konsole wird angezeigt ... :hello: :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 Uhr.
Seite 1 von 2  1 2      

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