Class TMessageSocket (unit MsgSock)

Inherits from

TComponent

Constructors


constructor Create(AOwner: TComponent);

-- constructor Create Con Create si crea il componente e la associata SendWindow.

constructor RunTimeCreate( AOwner: TComponent; const PostThreadPriority: TThreadPriority; const PostSupport: Boolean; const LowMessageID: Word; const HighMessageID: Word);

A Design time la PostThread non viene creata e quindi non va distrutta


Functions

procedure BroadcastIdentity;


destructor Destroy;

-- destructor Destroy Con Destroy si distrugge il componente, la associata SendWindow, l'eventuale PostThread e la lista con gli handler dei componenti da cui sono arrivate risposte alla BroadcastIdentity.

procedure MessageHandled;

Si invia un messaggio WM_Datacopy all'handle ottenuto con la PostHandle a partire dall'handle corrispondente ad un componente TMessageSocket, con WParam si trasferisce l'handle del componente da cui proviene il messaggio

procedure PostMessage(const MessageID: Word; const DestinationHandle: Hwnd; const DataPtr: Pointer; const DataSize: Word);

Si invia un messaggio WM_Datacopy all'handle corrispondente ad un componente TMessageSocket, con WParam si trasferisce l'handle del componente da cui proviene il messaggio

function PostSupported(const Handle: Hwnd): Boolean;

L'uguaglianza dei due handle segnala l'assenza di supporto dei messaggi asincroni

procedure SendMessage(const MessageID: Word; const DestinationHandle: Hwnd; const DataPtr: Pointer; const DataSize: Word);

La lista con gli handler dei componenti da cui in precedenza sono arrivate risposte alla BroadcastIdentity va eliminata

procedure Loaded;

-- procedure Loaded Al caricamento del componente si crea, se richiesto, la PostThread.

function PostHandle(const SendHandle: Hwnd): Hwnd;

-- function PostHandle Dato l'handle di un componente TMessageSocket restituisce il corrispondente handle della PostWindow cui devono essere inviati i messaggi asincroni.

procedure SendWindowProc(var Msg: TMessage);

* TMessageSock **************************************************************} {-- procedure SendWindowProc Window procedure della window associata al componente.

procedure SetHighMessageID(ID: Word);


procedure SetLowMessageID(ID: Word);

-- procedure SetLowMessageID/SetHighMessageID Tramite esse si blocca l'assegnamento di valori illegali a LowMessageID e HighMessageID.

procedure SetPostThreadPriority(Priority: TThreadPriority);

-- procedure SetPostThreadPriority Tramite essa si blocca l'assegnamento di valori illegali a PostThreadPriority

Properties

property HighMessageID : Word


property LowMessageID : Word


property PostSupport : Boolean


property PostThreadPriority : TThreadPriority


Events

event OnPostedMessage : TMessageEvent


event OnSentMessage : TMessageEvent


Variables

FHighMessageID : Word;


FLowMessageID : Word;


FOnPostedMessage : TMessageEvent;


FOnSentMessage : TMessageEvent;


FPostSupport : Boolean;


FPostThreadPriority : TThreadPriority;


HandlesList : Pointer;

Handle della window associata alla PostThread

PostThread : TThread;


PostWindow : Hwnd;

Handle della window associata al componente, è usata per identificare il componente stesso

SendWindow : Hwnd;



Constructors


constructor Create(AOwner: TComponent);

-- constructor Create Con Create si crea il componente e la associata SendWindow.


constructor RunTimeCreate( AOwner: TComponent; const PostThreadPriority: TThreadPriority; const PostSupport: Boolean; const LowMessageID: Word; const HighMessageID: Word);

A Design time la PostThread non viene creata e quindi non va distrutta


Functions


procedure BroadcastIdentity;


destructor Destroy;

-- destructor Destroy Con Destroy si distrugge il componente, la associata SendWindow, l'eventuale PostThread e la lista con gli handler dei componenti da cui sono arrivate risposte alla BroadcastIdentity.


procedure MessageHandled;

Si invia un messaggio WM_Datacopy all'handle ottenuto con la PostHandle a partire dall'handle corrispondente ad un componente TMessageSocket, con WParam si trasferisce l'handle del componente da cui proviene il messaggio


procedure PostMessage(const MessageID: Word; const DestinationHandle: Hwnd; const DataPtr: Pointer; const DataSize: Word);

Si invia un messaggio WM_Datacopy all'handle corrispondente ad un componente TMessageSocket, con WParam si trasferisce l'handle del componente da cui proviene il messaggio


function PostSupported(const Handle: Hwnd): Boolean;

L'uguaglianza dei due handle segnala l'assenza di supporto dei messaggi asincroni


procedure SendMessage(const MessageID: Word; const DestinationHandle: Hwnd; const DataPtr: Pointer; const DataSize: Word);

La lista con gli handler dei componenti da cui in precedenza sono arrivate risposte alla BroadcastIdentity va eliminata


procedure Loaded;

-- procedure Loaded Al caricamento del componente si crea, se richiesto, la PostThread.


function PostHandle(const SendHandle: Hwnd): Hwnd;

-- function PostHandle Dato l'handle di un componente TMessageSocket restituisce il corrispondente handle della PostWindow cui devono essere inviati i messaggi asincroni.


procedure SendWindowProc(var Msg: TMessage);

* TMessageSock **************************************************************} {-- procedure SendWindowProc Window procedure della window associata al componente. Essa gestisce direttamente i messaggi sincroni e indirettamente, tramite PostThread, quelli asincroni attivando i corrispondenti eventi. Essa provvede inoltre direttamente alla risposta al messaggio inviato dalla BroadcastIdentity.


procedure SetHighMessageID(ID: Word);


procedure SetLowMessageID(ID: Word);

-- procedure SetLowMessageID/SetHighMessageID Tramite esse si blocca l'assegnamento di valori illegali a LowMessageID e HighMessageID.


procedure SetPostThreadPriority(Priority: TThreadPriority);

-- procedure SetPostThreadPriority Tramite essa si blocca l'assegnamento di valori illegali a PostThreadPriority


Properties


property HighMessageID : Word


property LowMessageID : Word


property PostSupport : Boolean


property PostThreadPriority : TThreadPriority


Events


event OnPostedMessage : TMessageEvent


event OnSentMessage : TMessageEvent


Variables


FHighMessageID : Word;


FLowMessageID : Word;


FOnPostedMessage : TMessageEvent;


FOnSentMessage : TMessageEvent;


FPostSupport : Boolean;


FPostThreadPriority : TThreadPriority;


HandlesList : Pointer;

Handle della window associata alla PostThread


PostThread : TThread;


PostWindow : Hwnd;

Handle della window associata al componente, è usata per identificare il componente stesso


SendWindow : Hwnd;