
 A LispWorks client can set up an advise loop across a conversation using dde-advise-start , which takes a  conversation (or a  service designator/ topic designator pair in the case of an automatically managed conversation using dde-advise-start* ), an  item , and a  key as its main arguments. The  key argument defaults to the conversation name, and can be used to distinguish between multiple advise loops established on the same service/topic/item group.
dde-advise-start conversation item &key key function format datap type
errorp
 The dde-advise-start function sets up an advise loop for the data item specified by  item on the specified  conversation .
 dde-client-advise-data  key  item  data &key &allow-other-keys The generic function dde-client-advise-data is the default function called when an advise loop informs a client that the data monitored by the loop has changed. By default it does nothing, but it may be specialized on the object used as the key in dde-advise-start or dde-advise-start* , or on a client conversation class if the default key is used.
 define-dde-client  name &key  service  class The macro define-dde-client defines a mapping from the symbol  name to the DDE service name with which to establish a conversation, and the conversation class to use for this conversation. The argument  service is a string which names the DDE service. It defaults to the print-name of  name . The argument  class is a subclass of dde-client-conversation which is used for all conversations with this service. It defaults to dde-client-conversation . Specifying a subclass allows various aspects of the behavior of the conversation to be specialized.
 The following is an example of how to set up an advise loop. The first step defines a client conversation class, called my-conv .
(defclass my-conv (dde-client-conversation)
())
 The function define-dde-client can now be used to define a specific instance of the my-conv class for referring to a server application that responds to the service name " FOO ".
 (win32:define-dde-client :foo :service "FOO" :class my-conv) The next step defines a method on dde-client-advise-data which returns a string stating that the item has changed.
(defmethod dde-client-advise-data ((self my-conv) item data &key
&allow-other-keys)
(format t "~&Item ~s changed to ~s~%" item data))
 Finally, the next command starts the advise loop on the server foo , with the topic name " file1 ", to monitor the item " slot1 ".
 (win32:dde-advise-start* :foo "file1" "slot1") When the value of the item specified by " slot1 "" changes, the server calls dde-client-advise-data which returns a string, as described above.
 The  function argument of dde-advise-start and dde-advise-start* specifies the function called by the advise loop when it notices a change to the item it is monitoring. The function is dde-client-advise-start by default. A different function can be provided, and should have a lambda list similar to the following:
  key  item  data &key  conversation &allow-other-keys The arguments  key and  item identify the advise loop, or link. The argument  data contains the new data for hot links; for warm links it is nil .
 Advise loops are closed using dde-advise-stop or dde-advise-stop* .
dde-advise-stop conversation item &key key format errorp
disconnectp no-advise-ok
 The function dde-advise-stop removes a particular link from  conversation specified by  item ,  format and  key . If  key is the last key for the  item / format pair, the advise loop for the pair is terminated.