PDA

Показать полную графическую версию : Delphi


Roman Go
23-11-2002, 11:43
Каким образом можно перехватывать сообщения виндовс... а заодно, если у кого есть какие виды сообщений есть, поделитесь, если не жалко, желательно на русском языке...

FormerVla
24-11-2002, 14:02
>Roman Go


Пример:
перехватываем собщение WM_NСHITTEST.
Для этого пишем процедуру:
interface
uses
*Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
*Dialogs, StdCtrls;
type
*TForm1 = class(TForm)
* * private
* *{ Private declarations }
*public
*procedure AllMove(var Msg:TMessage);message WM_NСHITTEST;
{ Public declarations }
*end;
var
*Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.AllMove(var Msg:TMessage);
begin
inherited;
if Msg.Result=1 then Msg.Result:=2;
end;

end.
Когда мы потащим форму мышью за произвольное место (если мышь не на границе формы, не на заголовке и не над кнопками системного меню, то без перехвата Msg.Result =1 ), заработает наша процедура и подменит Msg.Result на 2 (если мышь на заголовке, то без перехвата Msg.Result =2) - Windows будет обманута, решит, что мышь над заголовком и мы сможем перетащить форму за любое место.
:)

Исправлено: Vla, 21:09 24-11-2002


Исправлено: Vla, 21:24 27-11-2002

Roman Go
25-11-2002, 04:22
собщение WM_NСHITTEST  а что это за сообщение... где вообще можно почитать (только чтобы не в магазин идти) как с ними работать и какие возможности появляются при работе с сообщениями Windows...

vasketsov
25-11-2002, 13:53
Roman Go
где вообще можно почитать (только чтобы не в магазин идти)
msdn.microsoft.com

Замечение к примеру: вроде в декларации AllMove надо var добавить или не надо?

Roman Go
26-11-2002, 03:58
почитать
в смысле по русски почитать...:(

FormerVla
27-11-2002, 20:30
>vasketsov
Замечение к примеру: вроде в декларации AllMove надо var добавить или не надо?

Спасибо за замечание.
Без var работать не будет.
Описка.
:shuffle:




© OSzone.net 2001-2012