source: branches/overos/Os.Application.pas

Last change on this file was 39, checked in by chronos, 11 months ago
  • Modified: Simplified unit names.
File size: 1.5 KB
Line 
1unit Os.Application;
2
3interface
4
5uses
6 Classes, SysUtils, Generics.Collections, Os.Types, Os.Window;
7
8type
9
10 { TMessageQueue }
11
12 TMessageQueue = class
13 Messages: TObjectList<TMessage>;
14 procedure PostMessage(Handle: TObject; Message: TMessage);
15 constructor Create;
16 destructor Destroy; override;
17 end;
18
19 { TApplication }
20
21 TApplication = class
22 MessageQueue: TMessageQueue;
23 MainWindow: TWindow;
24 procedure ProcessMessages;
25 constructor Create;
26 destructor Destroy; override;
27 end;
28
29
30implementation
31
32{ TApplication }
33
34procedure TApplication.ProcessMessages;
35var
36 Message: TMessage;
37begin
38 while MessageQueue.Messages.Count > 0 do begin
39 Message := MessageQueue.Messages.First;
40 MessageQueue.Messages.Delete(0);
41 if Message is TMessageWindow then
42 TWindow(Message.Handle).HandleMessage(Message);
43 Message.Free;
44 end;
45end;
46
47constructor TApplication.Create;
48begin
49 MessageQueue := TMessageQueue.Create;
50end;
51
52destructor TApplication.Destroy;
53begin
54 FreeAndNil(MessageQueue);
55 inherited;
56end;
57
58{ TMessageQueue }
59
60procedure TMessageQueue.PostMessage(Handle: TObject; Message: TMessage);
61begin
62 Message.Handle := Handle;
63 Messages.Add(Message);
64end;
65
66constructor TMessageQueue.Create;
67begin
68 Messages := TObjectList<TMessage>.Create;
69 Messages.OwnsObjects := False;
70end;
71
72destructor TMessageQueue.Destroy;
73var
74 I: Integer;
75begin
76 for I := 0 to Messages.Count - 1 do
77 Messages[I].Free;
78 FreeAndNil(Messages);
79 inherited;
80end;
81
82end.
83
Note: See TracBrowser for help on using the repository browser.