home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* TXDEMO.PAS *)
- (* Kleine Demonstration einiger M÷glichkeiten *)
- (* von Turbo Pascal fⁿr Windows *)
- (* (c) 1991 W.Rinke & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM TX_Demo;
-
- {$R TXDEMO}
-
- USES Strings, WinTypes, WinProcs;
-
- CONST
- AppName = 'TX_Demo'; (* u.a. Name der Resource *)
-
- CONST
- idm_System = 199; (* Handles der Menⁿpunkte *)
- idm_Logo = 200;
-
-
- FUNCTION Logo(Dialog : HWnd; Message, WParam : WORD;
- LParam : LongInt) : BOOL; EXPORT;
- (* Dient dem Aufbau und der Steuerung des Logo-Fensters *)
- (* HWnd -> Window-"Klasse", *)
- (* Message und WParam -> Zeiger auf Nachrichten *)
- (* BOOL -> neuer Typ speziell fⁿr Windows *)
- (* EXPORT -> die Prozedur wird von Windows gesteuert *)
- BEGIN
- Logo := TRUE;
- CASE Message OF (* Jede Prozedur, die vom Programm- *)
- (* manager gesteuert wird, mu▀ die *)
- (* Messages auswerten. *)
- wm_InitDialog:
- Exit;
- wm_Command:
- IF (WParam = IDOK) OR (WParam = IDCANCEL) THEN BEGIN
- (* Auswertung des Pushbuttons *)
- (* "Diesen Knopf nicht drⁿcken!" *)
- EndDialog(Dialog, 1);
- (* Oder entsprechende andere Aktionen *)
- (* Wichtig: Windows erhΣlt die Steuerung zurⁿck *)
- Exit;
- END;
- END;
- Logo := False;
- END;
-
-
- FUNCTION MainWndProc(Window : HWnd; Message, WParam: WORD;
- LParam : LongInt) : LongInt; EXPORT;
- (* Steuerung des Hauptfensters -- *)
- (* vgl. mitgelieferte Demo GENERIC.PAS *)
- VAR
- LogoProc : TFarProc; (* Zeiger auf "Tochterfenster" *)
- DC : HDC;
- PS : TPaintStruct;
- BEGIN
- MainWndProc := 0;
- CASE Message OF
- wm_Command:
- CASE WParam OF (* Auswertung der Menⁿpunkte *)
- idm_Logo:
- BEGIN
- LogoProc := MakeProcInstance(@Logo,hInstance);
- (* Tochterfenster erzeugen *)
- DialogBox(hInstance, 'ToolboxLogo',
- Window, LogoProc);
- (* Steuerung ⁿbergeben *)
- FreeProcInstance(LogoProc);
- (* Fenster schlie▀en und Speicher freigeben *)
- Exit;
- END;
- END;
- wm_Destroy: (* "Schlie▀en" angeklickt *)
- BEGIN
- PostQuitMessage(0);
- (* Meldung an den Programm-Manager, *)
- (* da▀ die Applikation beendet ist *)
- (* Entspricht in etwa "Halt(0)" *)
- Exit;
- END;
- END;
- MainWndProc := DefWindowProc(Window, Message,
- WParam, LParam);
- END;
-
- (* ---------------------------------------------------- *)
- (* Die folgenden Prozeduren sind der Kern der *)
- (* Windows-Applikation und sehen in vielen Anwendungen *)
- (* identisch aus. *)
- (* vgl. die mitgelieferten Demos *)
- (* ---------------------------------------------------- *)
-
- PROCEDURE InitApplication;
- (* Initialisierung, der Fenster, etc. *)
- CONST
- WindowClass : TWndClass = (
- style : 0;
- lpfnWndProc : @MainWndProc;
- cbClsExtra : 0;
- cbWndExtra : 0;
- hInstance : 0;
- hIcon : 0;
- hCursor : 0;
- hbrBackground : 0;
- lpszMenuName : AppName;
- lpszClassName : AppName );
- BEGIN
- WindowClass.hInstance := hInstance;
- WindowClass.hIcon := LoadIcon(0, idi_Application);
- WindowClass.hCursor := LoadCursor(0, idc_Arrow);
- WindowClass.hbrBackground:= GetStockObject(White_Brush);
- IF NOT RegisterClass(WindowClass) THEN Halt(1);
- END;
-
-
- PROCEDURE InitInstance;
- VAR
- Window : HWnd;
- BEGIN
- Window := CreateWindow(
- AppName, (* Name der Applikation *)
- 'Erste Windows-Anwendung', (* ▄berschrift *)
- ws_OverlappedWindow, (* "Style" des Fensters *)
- cw_UseDefault,
- cw_UseDefault,
- cw_UseDefault,
- cw_UseDefault, (* Start-Koordinaten *)
- 0,
- 0,
- hInstance,
- NIL);
- IF Window = 0 THEN Halt(1);
- (* Bei der Initialisierung ist etwas schiefgelaufen *)
- ShowWindow(Window, CmdShow);
- (* Zeigt alle Elemente des Fensters *)
- UpdateWindow(Window);
- (* L÷scht die "Client-Area" -- die ArbeitsflΣche *)
- END;
-
-
- PROCEDURE WinMain;
- (* Kern der eigenen Windows-Applikation *)
- VAR
- Message: TMsg;
- BEGIN
- IF hPrevInst = 0 THEN InitApplication;
- InitInstance;
- WHILE GetMessage(Message, 0, 0, 0) DO BEGIN
- TranslateMessage(Message);
- DispatchMessage(Message);
- END;
- Halt(Message.wParam);
- END;
-
- BEGIN (* "Tribut" an den Pascal-Compiler *)
- WinMain;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von TXDEMO.PAS *)
-