11.04.2014 Views

Advanced MFC Programming

Advanced MFC Programming

Advanced MFC Programming

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 16. Context Sensitive Help<br />

(<br />

m_dwInst, (LPBYTE)(LPCSTR)m_szPoke, m_szPoke.GetLength(), 0, hszPokeItem,<br />

CF_TEXT, 0<br />

);<br />

::DdeClientTransaction<br />

(<br />

(LPBYTE)hData,<br />

0xFFFFFFFF,<br />

m_hConvClient,<br />

hszPokeItem,<br />

CF_TEXT,<br />

XTYP_POKE,<br />

TIMEOUT_ASYNC,<br />

NULL<br />

);<br />

……<br />

UnobtainHsz(hszPokeItem);<br />

Synchronous Transaction<br />

Asynchronous Transaction<br />

Initialize<br />

transaction<br />

Initialize<br />

transaction<br />

Yes<br />

Has the server<br />

responded?<br />

No<br />

Receive<br />

XTYP_XACT_COMPLETE<br />

message<br />

Yes<br />

Has timer<br />

timed out?<br />

No<br />

Go on<br />

Transaction<br />

finished<br />

Transaction<br />

finished<br />

Figure 15-6. Synchronous & asynchronous transactions<br />

The following code fragment shows how the transaction result is processed when the client receives an<br />

XTYP_XACT_COMPLETE message:<br />

……<br />

case XTYP_XACT_COMPLETE:<br />

{<br />

HSZ hszPokeItem;<br />

hszPokeItem=ObtainHsz(TEXT("Poke"));<br />

if<br />

(<br />

hConv == m_hConvClient &&<br />

478

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!