Patrick Wong wrote:
> Thanks for your advice.
> Console program does not have message pump by default. I built a simple
> function to peek messages in the following way:
> void __fastcall PumpMessages()
> MSG Msg;
> unsigned short TimeTick = 0;
> while(TimeTick < 50)
> if(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))
> /* Dispatch the message. */
> } /* End of PeekMessage while loop. */
> /* if there is no message to process, */
> /* then sleep for a while to avoid tight */
> /* looping */
> /* Increment time tick to allow quiting */
> /* the loop anyway upon times out */
Not good. Use GetMessage() instead of PeekMessage(), don't call sleep.
GetMessage waits for messages to be placed in the queue before it returns.
> Not a good design but anyway the events can be triggered now when I call
> the function.
> Problem now is when I call SmtpCli->Data(), after the From, To, Subject,
> Content-type stuff are posted the function relies on the
> SmtpClientGetData event handler to post mail body line by line. In my
> case since the message loop function can only be called after the SmtpCli-
> >Data() returned, therefore the MsgLine points to null when being
> referenced inside SmtpCli->Data(). Is there any other way to set the
> mail body prior to calling Data()?
> I also note in the SmtpProt.pas there is a derived class TSyncSmtpCli.
> Does this class support blocked operations which are not message-based?
> Is there any example in using this derivative?
> Thanks and regards,
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be