imaglist.h WXH
intl.h WXH Base
ioswrap.h WXH Base
+ipc.h WXH Base
ipcbase.h WXH Base
isql.h WXH Base
isqlext.h WXH Base
Further information on these classes will be available in due course.
+Notice that by including {\tt <wx/ipc.h>} you may define convnient synonyms for
+the IPC classes: {\tt wxServer} for either {\tt wxDDEServer} or
+{\tt wxTCPServer} depending on whether DDE-based or socket-based implementation
+is used and the same thing for {\tt wxClient} and {\tt wxConnection}. By
+default, DDE implementation is used under Windows. If you want to use IPC
+between the different workstations you should define {\tt wxUSE\_DDE\_FOR\_IPC}
+as $0$ before including this header -- this will force using TCP/IP
+implementation even under Windows.
+
+
wxWindows has a high-level protocol based on Windows DDE.
There are two implementations of this DDE-like protocol:
one using real DDE running on Windows only, and another using TCP/IP (sockets) that runs
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/ipc.h
+// Purpose: wrapper around different wxIPC classes implementations
+// Author: Vadim Zeitlin
+// Modified by:
+// Created: 15.04.02
+// RCS-ID: $Id$
+// Copyright: (c) 2002 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// Set wxUSE_DDE_FOR_IPC to 1 to use DDE for IPC under Windows. If it is set to
+// 0, or if the platform is not Windows, use TCP/IP for IPC implementation
+
+#if !defined(wxUSE_DDE_FOR_IPC)
+ #ifdef __WXMSW__
+ #define wxUSE_DDE_FOR_IPC 1
+ #else
+ #define wxUSE_DDE_FOR_IPC 0
+ #endif
+#endif // !defined(wxUSE_DDE_FOR_IPC)
+
+#if !defined(__WINDOWS__)
+ #undef wxUSE_DDE_FOR_IPC
+ #define wxUSE_DDE_FOR_IPC 0
+#endif
+
+#if wxUSE_DDE_FOR_IPC
+ #define wxConnection wxDDEConnection
+ #define wxServer wxDDEServer
+ #define wxClient wxDDEClient
+
+ #include "wx/dde.h"
+#else // !wxUSE_DDE_FOR_IPC
+ #define wxConnection wxTCPConnection
+ #define wxServer wxTCPServer
+ #define wxClient wxTCPClient
+
+ #include "wx/sckipc.h"
+#endif // wxUSE_DDE_FOR_IPC/!wxUSE_DDE_FOR_IPC
+
bool MyApp::OnInit()
{
// service name (DDE classes) or port number (TCP/IP based classes)
- wxString service = "4242";
+ wxString service = IPC_SERVICE;
// ignored under DDE, host name in TCP/IP based classes
wxString hostName = "localhost";
// suppress the log messages from MakeConnection()
{
wxLogNull nolog;
- the_connection = (MyConnection *)my_client->MakeConnection(hostName, service, "IPC TEST");
+ the_connection = (MyConnection *)
+ my_client->MakeConnection(hostName, service, IPC_TOPIC);
while ( !the_connection )
{
}
}
- if (!the_connection->StartAdvise("Item"))
+ if (!the_connection->StartAdvise(IPC_ADVISE_NAME))
wxMessageBox("StartAdvise failed", "Client Demo Error");
// Create the main frame window
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-/*
- * Adjust this before compiling, to switch between real DDE and TCP/IP
- * implementations.
- */
+// You may set this to 0 to prevent DDE from being used even under Windows
+//#define wxUSE_DDE_FOR_IPC 0
-// If 1, use real DDE. If 0, use TCP/IP
+#include <wx/ipc.h>
-#ifdef __WXMSW__
-#define wxUSE_DDE_FOR_SAMPLE 0
-#else
-#define wxUSE_DDE_FOR_SAMPLE 0
-#endif
+// the default service name
+#define IPC_SERVICE "4242"
-#if wxUSE_DDE_FOR_SAMPLE
-
-#define wxConnection wxDDEConnection
-#define wxServer wxDDEServer
-#define wxClient wxDDEClient
-
-#include <wx/dde.h>
-
-#else
-
-#define wxConnection wxTCPConnection
-#define wxServer wxTCPServer
-#define wxClient wxTCPClient
-
-#include <wx/sckipc.h>
-
-#endif
+// the IPC topic
+#define IPC_TOPIC "IPC TEST"
+// the name of the item we're being advised about
+#define IPC_ADVISE_NAME "Item"
(new MyFrame(NULL, "Server"))->Show(TRUE);
// service name (DDE classes) or port number (TCP/IP based classes)
- wxString service = "4242";
+ wxString service = IPC_SERVICE;
if (argc > 1)
service = argv[1];
wxString value = listBox->GetStringSelection();
if (the_connection)
{
- the_connection->Advise("Item", (wxChar *)value.c_str());
+ the_connection->Advise(IPC_ADVISE_NAME, (wxChar *)value.c_str());
}
}
}
wxConnectionBase *MyServer::OnAcceptConnection(const wxString& topic)
{
- if (strcmp(topic, "STDIO") != 0 && strcmp(topic, "IPC TEST") == 0)
+ if ( topic == IPC_TOPIC )
return new MyConnection(ipc_buffer, WXSIZEOF(ipc_buffer));
- else
- return NULL;
+
+ // unknown topic
+ return NULL;
}
// ----------------------------------------------------------------------------