读书人

SPCOMM源码中自定义消息如何生效的

发布时间: 2013-01-05 15:20:39 作者: rapoo

SPCOMM源码中自定义消息怎么生效的?
本帖最后由 shamork 于 2012-12-13 10:53:54 编辑 SPCOMM源文件开始定义了自定义消息

const
// messages from read/write threads
PWM_GOTCOMMDATA = WM_USER + 1;
PWM_RECEIVEERROR = WM_USER + 2;
PWM_REQUESTHANGUP = WM_USER + 3;
PWM_MODEMSTATECHANGE = WM_USER + 4;
PWM_SENDDATAEMPTY = WM_USER + 5;


然后就有一个函数
procedure TComm.CommWndProc( var msg: TMessage );
begin
with msg do
case msg of
PWM_GOTCOMMDATA:
begin
ReceiveData( PChar(LParam), WParam );
LocalFree( LParam )
end;
PWM_RECEIVEERROR: ReceiveError( LParam );
PWM_MODEMSTATECHANGE:ModemStateChange( LParam );
PWM_REQUESTHANGUP: RequestHangup;
PWM_SENDDATAEMPTY: _SendDataEmpty;
else
Result := DefWindowProc(FHWnd, Msg, wParam, lParam);
end
end;


ReceiveData是这样的
procedure TComm.ReceiveData(Buffer: PChar; BufferLength: Word);
begin
if Assigned(FOnReceiveData) then
FOnReceiveData( self, Buffer, BufferLength )
end;

FOnReceiveData
FOnReceiveData:     TReceiveDataEvent;
;
TReceiveDataEvent
TReceiveDataEvent = procedure(Sender: TObject; Buffer: Pointer;
BufferLength: Word) of object;


没有请问自定义消息从哪里传送到TComm.CommWndProc的,TComm.CommWndProc的声明中没看到messge关键字啊
[解决办法]
肯定有Sendmessage或postmessage之类的,你在pas文件中搜 PWM_GOTCOMMDATA

读书人网 >.NET

热点推荐