X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2bda0e173844e8e0f8acf4e8ad8b5c26e5c6fe5d..8e77fd8bca165aab9709649d79a7cbc6a172d4e1:/include/wx/msw/dde.h diff --git a/include/wx/msw/dde.h b/include/wx/msw/dde.h index 2fdd0ec99a..aad250fa8c 100644 --- a/include/wx/msw/dde.h +++ b/include/wx/msw/dde.h @@ -1,20 +1,16 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: dde.h +// Name: wx/msw/dde.h // Purpose: DDE class // Author: Julian Smart // Modified by: // Created: 01/02/97 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifndef __DDEH__ -#define __DDEH__ - -#ifdef __GNUG__ -#pragma interface "dde.h" -#endif +#ifndef _WX_DDE_H_ +#define _WX_DDE_H_ #include "wx/ipcbase.h" @@ -42,120 +38,101 @@ * */ -class WXDLLEXPORT wxDDEServer; -class WXDLLEXPORT wxDDEClient; +class WXDLLIMPEXP_FWD_BASE wxDDEServer; +class WXDLLIMPEXP_FWD_BASE wxDDEClient; -class WXDLLEXPORT wxDDEConnection: public wxConnectionBase +class WXDLLIMPEXP_BASE wxDDEConnection : public wxConnectionBase { - DECLARE_DYNAMIC_CLASS(wxDDEConnection) - public: - char *buf_ptr; - wxString topic_name; - int buf_size; - wxDDEServer *server; - wxDDEClient *client; - - WXHCONV hConv; - char *sending_data; - int data_size; - int data_type; - - wxDDEConnection(char *buffer, int size); - wxDDEConnection(void); - ~wxDDEConnection(void); - - // Calls that CLIENT can make - virtual bool Execute(char *data, int size = -1, int format = wxCF_TEXT); - virtual bool Execute(const wxString& str) { return Execute((char *)(const char *)str, -1, wxCF_TEXT); } - virtual char *Request(const wxString& item, int *size = NULL, int format = wxCF_TEXT); - virtual bool Poke(const wxString& item, char *data, int size = -1, int format = wxCF_TEXT); +public: + wxDDEConnection(void *buffer, size_t size); // use external buffer + wxDDEConnection(); // use internal buffer + virtual ~wxDDEConnection(); + + // implement base class pure virtual methods + virtual const void *Request(const wxString& item, + size_t *size = NULL, + wxIPCFormat format = wxIPC_TEXT); virtual bool StartAdvise(const wxString& item); virtual bool StopAdvise(const wxString& item); + virtual bool Disconnect(); + +protected: + virtual bool DoExecute(const void *data, size_t size, wxIPCFormat format); + virtual bool DoPoke(const wxString& item, const void *data, size_t size, + wxIPCFormat format); + virtual bool DoAdvise(const wxString& item, const void *data, size_t size, + wxIPCFormat format); + +public: + wxString m_topicName; + wxDDEServer* m_server; + wxDDEClient* m_client; + + WXHCONV m_hConv; + const void* m_sendingData; + int m_dataSize; + wxIPCFormat m_dataType; + + wxDECLARE_NO_COPY_CLASS(wxDDEConnection); + DECLARE_DYNAMIC_CLASS(wxDDEConnection) +}; - // Calls that SERVER can make - virtual bool Advise(const wxString& item, char *data, int size = -1, int format = wxCF_TEXT); +class WXDLLIMPEXP_BASE wxDDEServer : public wxServerBase +{ +public: + wxDDEServer(); + bool Create(const wxString& server_name); + virtual ~wxDDEServer(); - // Calls that both can make - virtual bool Disconnect(void); + virtual wxConnectionBase *OnAcceptConnection(const wxString& topic); - // Callbacks to SERVER - override at will - virtual bool OnExecute(const wxString& topic, char *data, int size, int format) { return FALSE; }; - virtual char *OnRequest(const wxString& topic, const wxString& item, int *size, int format) { return NULL; }; - virtual bool OnPoke(const wxString& topic, const wxString& item, char *data, int size, int format) { return FALSE; }; - virtual bool OnStartAdvise(const wxString& topic, const wxString& item) { return FALSE; }; - virtual bool OnStopAdvise(const wxString& topic, const wxString& item) { return FALSE; }; + // Find/delete wxDDEConnection corresponding to the HCONV + wxDDEConnection *FindConnection(WXHCONV conv); + bool DeleteConnection(WXHCONV conv); + wxString& GetServiceName() const { return (wxString&) m_serviceName; } - // Callbacks to CLIENT - override at will - virtual bool OnAdvise(const wxString& topic, const wxString& item, char *data, int size, int format) { return FALSE; }; + wxDDEConnectionList& GetConnections() const + { return (wxDDEConnectionList&) m_connections; } - // Callbacks to BOTH +protected: + int m_lastError; + wxString m_serviceName; + wxDDEConnectionList m_connections; - // Default behaviour is to delete connection and return TRUE - virtual bool OnDisconnect(void); + DECLARE_DYNAMIC_CLASS(wxDDEServer) }; -class WXDLLEXPORT wxDDEServer: public wxServerBase +class WXDLLIMPEXP_BASE wxDDEClient: public wxClientBase { - DECLARE_DYNAMIC_CLASS(wxDDEServer) - public: - - wxDDEServer(void); - ~wxDDEServer(void); - bool Create(const wxString& server_name); // Returns FALSE if can't create server (e.g. port - // number is already in use) - virtual wxConnectionBase *OnAcceptConnection(const wxString& topic); - - //////////////////////////////////////////////////////////// - // Implementation - - // Find/delete wxDDEConnection corresponding to the HCONV - wxDDEConnection *FindConnection(WXHCONV conv); - bool DeleteConnection(WXHCONV conv); - inline wxString& GetServiceName(void) const { return (wxString&) service_name; } - inline wxList& GetConnections(void) const { return (wxList&) connections; } - - protected: - int lastError; - wxString service_name; - wxList connections; -}; +public: + wxDDEClient(); + virtual ~wxDDEClient(); -class WXDLLEXPORT wxDDEClient: public wxClientBase -{ - DECLARE_DYNAMIC_CLASS(wxDDEClient) - public: - wxDDEClient(void); - ~wxDDEClient(void); - bool ValidHost(const wxString& host); - virtual wxConnectionBase *MakeConnection(const wxString& host, const wxString& server, const wxString& topic); - // Call this to make a connection. - // Returns NULL if cannot. - virtual wxConnectionBase *OnMakeConnection(void); // Tailor this to return own connection. - - //////////////////////////////////////////////////////////// - // Implementation - - // Find/delete wxDDEConnection corresponding to the HCONV - wxDDEConnection *FindConnection(WXHCONV conv); - bool DeleteConnection(WXHCONV conv); - inline wxList& GetConnections(void) const { return (wxList&) connections; } - - protected: - int lastError; - wxList connections; -}; + bool ValidHost(const wxString& host); + + // Call this to make a connection. Returns NULL if cannot. + virtual wxConnectionBase *MakeConnection(const wxString& host, + const wxString& server, + const wxString& topic); + + // Tailor this to return own connection. + virtual wxConnectionBase *OnMakeConnection(); + + // Find/delete wxDDEConnection corresponding to the HCONV + wxDDEConnection *FindConnection(WXHCONV conv); + bool DeleteConnection(WXHCONV conv); -void WXDLLEXPORT wxDDEInitialize(); -void WXDLLEXPORT wxDDECleanUp(); + wxDDEConnectionList& GetConnections() const + { return (wxDDEConnectionList&) m_connections; } + +protected: + int m_lastError; + wxDDEConnectionList m_connections; + + DECLARE_DYNAMIC_CLASS(wxDDEClient) +}; -// Compatibility -#if WXWIN_COMPATIBILITY -#define wxServer wxDDEServer -#define wxClient wxDDEClient -#define wxConnection wxDDEConnection -#define wxIPCInitialize wxDDEInitialize -#define wxIPCCleanUp wxDDECleanUp -#endif +void WXDLLIMPEXP_BASE wxDDEInitialize(); +void WXDLLIMPEXP_BASE wxDDECleanUp(); -#endif - // __DDEH__ +#endif // _WX_DDE_H_