Eric,
I guess it helps to remove all pending messages with the given ID
from the queue when the message ID is unregistered.
One could do that either in custom code or maybe it should
be added in TIcsWndHandler.UnregisterMessage as below?
procedure TIcsWndHandler.UnregisterMessage(var Msg: UINT);
var
LMsg: TMsg; // <== added
begin
if Msg = 0 then
Exit;
if FMsgLow < WM_USER then
raise EIcsException.Create('MsgLow not defined');
if Msg >= (FMsgLow + WH_MAX_MSG) then
raise EIcsException.Create('Msg value out of bound');
if not Assigned(FMsgMap[Msg - FMsgLow]) then
raise EIcsException.Create('Msg not registered');
FMsgMap[Msg - FMsgLow] := nil;
Dec(FMsgCnt);
Msg := 0;
while PeekMessage(LMsg, FHandle, Msg, Msg, PM_REMOVE) do {loop}; // <==
added
if FMsgCnt = 0 then
DeallocateHWnd;
end;
--
Arno Garrels
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be