1 ///////////////////////////////////////////////////////////////////////////// 
   4 // Author:      Julian Smart 
   8 // Copyright:   (c) Julian Smart 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  16 #pragma interface "dde.h" 
  19 #include "wx/ipcbase.h" 
  22  * Mini-DDE implementation 
  24    Most transactions involve a topic name and an item name (choose these 
  25    as befits your application). 
  29    - ask the server to execute commands (data) associated with a topic 
  30    - request data from server by topic and item 
  31    - poke data into the server 
  32    - ask the server to start an advice loop on topic/item 
  33    - ask the server to stop an advice loop 
  37    - respond to execute, request, poke and advice start/stop 
  38    - send advise data to client 
  40    Note that this limits the server in the ways it can send data to the 
  41    client, i.e. it can't send unsolicited information. 
  45 class WXDLLIMPEXP_BASE wxDDEServer
; 
  46 class WXDLLIMPEXP_BASE wxDDEClient
; 
  48 class WXDLLIMPEXP_BASE wxDDEConnection
: public wxConnectionBase
 
  50   DECLARE_DYNAMIC_CLASS(wxDDEConnection
) 
  52   wxDDEConnection(wxChar 
*buffer
, int size
); // use external buffer 
  53   wxDDEConnection(); // use internal buffer 
  54   ~wxDDEConnection(void); 
  56   // Calls that CLIENT can make 
  57   virtual bool Execute(const wxChar 
*data
, int size 
= -1, wxIPCFormat format 
= wxIPC_TEXT
); 
  58   virtual wxChar 
*Request(const wxString
& item
, int *size 
= NULL
, wxIPCFormat format 
= wxIPC_TEXT
); 
  59   virtual bool Poke(const wxString
& item
, wxChar 
*data
, int size 
= -1, wxIPCFormat format 
= wxIPC_TEXT
); 
  60   virtual bool StartAdvise(const wxString
& item
); 
  61   virtual bool StopAdvise(const wxString
& item
); 
  63   // Calls that SERVER can make 
  64   virtual bool Advise(const wxString
& item
, wxChar 
*data
, int size 
= -1, wxIPCFormat format 
= wxIPC_TEXT
); 
  66   // Calls that both can make 
  67   virtual bool Disconnect(void); 
  69   // Default behaviour is to delete connection and return TRUE 
  70   virtual bool OnDisconnect(void); 
  74   wxDDEServer
*  m_server
; 
  75   wxDDEClient
*  m_client
; 
  78   wxChar
*       m_sendingData
; 
  80   wxIPCFormat  m_dataType
; 
  82     DECLARE_NO_COPY_CLASS(wxDDEConnection
) 
  85 class WXDLLIMPEXP_BASE wxDDEServer
: public wxServerBase
 
  87   DECLARE_DYNAMIC_CLASS(wxDDEServer
) 
  92   bool Create(const wxString
& server_name
); // Returns FALSE if can't create server (e.g. port 
  93                                   // number is already in use) 
  94   virtual wxConnectionBase 
*OnAcceptConnection(const wxString
& topic
); 
  96   //////////////////////////////////////////////////////////// 
  99   // Find/delete wxDDEConnection corresponding to the HCONV 
 100   wxDDEConnection 
*FindConnection(WXHCONV conv
); 
 101   bool DeleteConnection(WXHCONV conv
); 
 102   inline wxString
& GetServiceName(void) const { return (wxString
&) m_serviceName
; } 
 103     inline wxDDEConnectionList
& GetConnections(void) const 
 105         return (wxDDEConnectionList
&) m_connections
; 
 110     wxString  m_serviceName
; 
 111     wxDDEConnectionList m_connections
; 
 114 class WXDLLIMPEXP_BASE wxDDEClient
: public wxClientBase
 
 116   DECLARE_DYNAMIC_CLASS(wxDDEClient
) 
 120   bool ValidHost(const wxString
& host
); 
 121   virtual wxConnectionBase 
*MakeConnection(const wxString
& host
, const wxString
& server
, const wxString
& topic
); 
 122                                                 // Call this to make a connection. 
 123                                                 // Returns NULL if cannot. 
 124   virtual wxConnectionBase 
*OnMakeConnection(void); // Tailor this to return own connection. 
 126   //////////////////////////////////////////////////////////// 
 129   // Find/delete wxDDEConnection corresponding to the HCONV 
 130   wxDDEConnection 
*FindConnection(WXHCONV conv
); 
 131   bool DeleteConnection(WXHCONV conv
); 
 133     inline wxDDEConnectionList
& GetConnections(void) const 
 135         return (wxDDEConnectionList
&) m_connections
; 
 140     wxDDEConnectionList m_connections
; 
 143 void WXDLLIMPEXP_BASE 
wxDDEInitialize(); 
 144 void WXDLLIMPEXP_BASE 
wxDDECleanUp();