Odświeżę trochę temat, bo mam ten sam problem. Przy odbiorze wiadomości korzystam z takiego kodu:
CODE
if ( msg->flag & C_MF_PARSED )
return 0;
string body = msg->body;
// Przetwarzanie zmiennej "body"
cMessage m;
memset(&m, 0, sizeof(cMessage));
m.flag = msg->flag | MF_HTML | C_MF_PARSED;
m.type = MT_MESSAGE;
m.toUid = msg->toUid;
m.fromUid = msg->fromUid;
m.net = msg->net;
m.body = (char*)TStringPooler::newString(body);
m.ext = "";
sMESSAGESELECT ms;
ms.id = ICMessage(IMC_NEWMESSAGE, (int)&m);
if ( ms.id )
ICMessage(IMC_MESSAGEQUEUE, (int)&ms);
msg->flag |= MF_HIDE | MF_DONTADDTOHISTORY;
return IM_MSG_delete;
Jednak mimo wszystko stara wiadomość jest wyświetlana w oknie wiadomości (najpierw jest nowa, a później ta, która powinna zostać usunięta). Jest jakaś rada na to?