如何解决这个消息处理的问题?
小弟最近试验串口通信,到最后发现程序老是崩溃,跟踪了一下,问题如下,请各位有用BCB处理自定义消息的大人帮忙:
小弟建立了一个监视线程负责监视串口,如果有数据发送过来,发消息到主窗体(Form1),再由相应的函数处理
小弟我在Form1.h里定义了如下的消息映射:
//-----------Form1.h-----------
class TForm1 : public TForm
{
......
protected:
void __fastcall DoMyMsg(TMessage &Message);//处理监视线程消息
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(ON_COM_RECEIVE, TMessage, DoMyMsg);
END_MESSAGE_MAP(TForm)
.......
};
Form1里的处理函数如下:
//----------Form1.cpp--------
..........
void __fastcall TForm1::DoMyMsg(TMessage &message)
{
char ReceiveBuffer[1024];
if(ON_COM_RECEIVE == message.Msg)
if(myComm.Read(ReceiveBuffer, 1024/*BufferLenth*/, 20/*wait time*/))
//上面这行myComm.Read()是我自己写的方法,
//返回的是一个long int,如果读到数据,返回数据长度,否则返回0
Edit1->Text = ReceiveBuffer;
else
Edit1->Text = "Read buffer failed!";
Form1->Dispatch(&message);
}
..................
程序运行时,消息被成功捕获,但是处理函数执行完毕以后,DoMyMsg函数还是会被调用N次(具体的次数不详,大约是会调用无穷多次),跟踪发现上面的消息映射代码也会不停地被执行,请问如何解决这个问题,让消息处理函数只被调用一次?