![]() |
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
nice one... nein es gibt wirklich keinen. die ( diesmal mit richtigem genus für Schleife ^^ ) Message-loop wirst du vergeblich suchen. es gibt eine bei ConsoleIn, die allerdings nach Ende der eingabe abgebrochen wird.
Wenn das so weitergeht pack ich das ganze zeug doch in einen Thread, mach ne eigene Message-loop und versuche, das Fensterli bei der CloseFunc zu schließen... |
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
ich wollte deswegen keine eigene message-verarbeitung, weil ich ja sonst die key events des Fensters verwenden müsste, so kann ich mir die Zeichen direkt aus der Message holen. Nur so als Anmerkung.
|
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
Zitat:
|
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
Erstens:
Hierarchie
Delphi-Quellcode:
ist das meine eigene Fensterklasse, zweitens gibt es kein application und deswegen auch kein application.run in dem die sein könnte und drittens wird das Fenster direkt über die WindowProc initialisiert, oder sollte ich mich da irren ?. Dazu braucht es noch keine Schleife um eine Queue abzuarbeiten.
TObject
| TCustomWnd | TWnd | TConsoleWnd Sag mir wo die Message-loop stecken soll ? PS: zum Thema detaillierter Einblick in diesen Thread: Ich habe diese Konsole da ![]() bis jetzt so weit gebracht. Programm ist ~130kb groß. Das will ich mit der VCL mal sehn ;) |
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
wenn ich mir deinen Code unter
![]() |
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
Zitat:
Zitat:
Zitat:
|
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
hm also 1. Feststellung: es *braucht* einen loop. ja genau darum geht es ja wie ich die schleife unterbing ohne mein ganzes konzept übern haufen zu schmeißen ( nicht vorher eingeplant da nice-to-have )
|
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
Zitat:
|
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
hättest den Klassenname nennen müssn. ich nehm mal an TConsoleWnd. TCustomWnd is meine heilige kuh ;)
Delphi-Quellcode:
unit ConsoleWnd;
interface uses WndClass, StaticClass, types, windows, sysutils; type TConsoleWnd = class(TCustomWnd) proto: TCustomWndProtocolstatic; killed : boolean; Constructor Create(Param: Cardinal); Destructor Destroy; override; private fUseMessageThread: Boolean; TID: Cardinal; procedure Resize(Sender: TObject); procedure Hide(Sender: TObject); procedure SetUseMessageThread(doit: Boolean); public property UseMessageThread: Boolean read fUseMessageThread write SetUseMessageThread; procedure ProcessMessage; end; var WinKilled: Boolean; implementation Constructor TConsoleWnd.Create(Param: Cardinal); begin inherited; self.Width := 700; self.Height := 400; self.UseMinConstraints := true; self.MinConstraintsVal := Point(700, 400); proto := TCustomWndProtocolstatic.Create(self.handle); proto.Width := self.ClientRect.Right; proto.Height := self.ClientRect.Bottom; proto.font.Color := $FFFFFF; proto.font.Name := 'Courier'; proto.Color := $0; proto.Clear; self.OnResize := Resize; self.OnHide := Hide; end; procedure TConsoleWnd.Resize(Sender: TObject); begin if self.ClientRect.Bottom =0 then exit; proto.Width := self.ClientRect.Right; proto.Height := self.ClientRect.Bottom; end; procedure TConsoleWnd.Hide(Sender: TObject); begin proto.Hide; windows.TerminateProcess(GetCurrentProcess,0); end; Destructor TConsoleWnd.Destroy; begin proto.Free; inherited; end; procedure TConsoleWnd.ProcessMessage; var msg: TMsg; begin if GetMessage(msg,0,0,0) then begin TranslateMessage(msg); DispatchMessage(msg); end; end; procedure MessageProc(param: Cardinal); begin while true do TConsoleWnd(param).ProcessMessage; end; procedure TConsoleWnd.SetUseMessageThread(doit: Boolean); begin if (self.fUseMessageThread = false) and doit then begin BeginThread(nil,0,@MessageProc,@self,0,TID); end; if (self.fUseMessageThread = true) and (not doit) then begin TerminateThread(TID,0); end; end; end. |
Re: was machen mit den Hangups ? Konsolenprobleme die zweite
kleine zwischenbilanz:
Das hier artet irgendwie in eine code- und Textschlacht aus. der Lösung bin ich allerdings noch nicht viel näher gekommen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 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