Arno Garrels wrote:
> 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?
Previous code did remove message ID 0 (I should not code in OE 8-)
corrected code:
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);
while PeekMessage(LMsg, FHandle, Msg, Msg, PM_REMOVE) do {loop}; // <==
added
Msg := 0;
if FMsgCnt = 0 then
DeallocateHWnd;
end;
--
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