home *** CD-ROM | disk | FTP | other *** search
- {
- Designer: Craig Ward (100554,2072)
- Date: 20/7/95
-
- Function: Example of dealing with Windows Messages
-
- ***************************************************}
- unit Winmess;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, StdCtrls;
-
- type
- TForm1 = class(TForm)
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- {This is the procedure declaration for dealing with the Window's message to
- close the app's window - note that we would expect message handler's to be
- declared privately (why would we ever want an external unit to access another unit's
- message handlers!!!!)}
- procedure custWMSYS(var Message: TWMSYSCOMMAND); Message WM_CLOSE;
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- {******************************************************************************}
- implementation
-
- {$R *.DFM}
-
- {procedure that deals with the windows WM_CLOSE message -
-
- I'm sure that there are far easier ways of dealing with posting records, but
- this way illustrates some of the concepts behind Windows. Of course, in response
- to "mrYes" we could simply use "close;" but I've included a PostMessage method
- that provides an example of how to send messages to Windows.
-
- Note that this subroutine could be useful for database applications, where the
- a record has not yet been posted and the user tries to close down the form}
- procedure TForm1.custWMSYS(var Message: TWMSYSCOMMAND);
- var
- sTitle: string;
- pTitle: PChar;
- iTitle: integer;
- begin
- {find title of the Form}
- sTitle := Form1.Caption;
- {now set case statement for user's response to dialog box}
- case messageDlg('Save changes?', mtWarning, [mbYes, mbNo, mbCancel], 0) of
- mrYes:
- begin
- {*********************************}
- {allocate room on buffer for pchar}
- pTitle := StrAlloc(256);
- {convert string to pchar}
- StrPCopy(pTitle, sTitle);
- {find window's handle}
- iTitle := FindWindow(nil, pTitle);
- {*********************************}
- {post message to Windows to close down the window}
- PostMessage(iTitle, WM_QUIT, 0, 0);
- end;
- mrNo:
- close;
- mrCancel:
- {do nothing}
- end;
- end;
-
- end.
-