With the sending of the WM_DDE_ACK message in response to the WM_DDE_INITIATE message, the DDE conversation has begun. As I mentioned, when WndProc sends the WM_DDE_ACK message back to the client, it sets the wParam parameter to the handle of the child window it creates for the conversation. This means that all subsequent DDE messages occur between the client and this child window, whose window procedure is ServerProc.
ServerProc processes its WM_CREATE message by allocating memory required to hold NUM_STATES structures of type POPADVISE. (I'll discuss how these are used shortly.) The handle to this global memory block is stored as the second reserved word using SetWindowWord. This memory block is freed when ServerProc receives a WM_DESTROY message.