#include "wx/app.h"
#endif
-#include "wx/msw/private.h"
+#include "wx/module.h"
#include "wx/dde.h"
+#include "wx/msw/private.h"
+#include <windows.h>
+#include <ddeml.h>
+
+#ifndef __TWIN32__
#ifdef __GNUWIN32__
#include "wx/msw/gnuwin32/extra.h"
#endif
+#endif
-#include <windows.h>
-#include <ddeml.h>
#include <string.h>
#ifdef __WIN32__
delete [] DDEDefaultIPCBuffer ;
}
+// A module to allow DDE initialization/cleanup
+// without calling these functions from app.cpp or from
+// the user's application.
+
+class wxDDEModule: public wxModule
+{
+DECLARE_DYNAMIC_CLASS(wxDDEModule)
+public:
+ wxDDEModule() {}
+ bool OnInit() { wxDDEInitialize(); return TRUE; };
+ void OnExit() { wxDDECleanUp(); };
+};
+
+IMPLEMENT_DYNAMIC_CLASS(wxDDEModule, wxModule)
+
// Global find connection
static wxDDEConnection *DDEFindConnection(HCONV hConv)
{
m_serviceName = server_name;
HSZ serviceName = DdeCreateStringHandle(DDEIdInst, (char*) (const char *)server_name, CP_WINANSI);
- if (DdeNameService(DDEIdInst, serviceName, NULL, DNS_REGISTER) == 0)
+ if (DdeNameService(DDEIdInst, serviceName, (HSZ) NULL, DNS_REGISTER) == 0)
{
DDEPrintError();
return FALSE;
HSZ topic_atom = DdeCreateStringHandle(DDEIdInst, (char*) (const char *)topic, CP_WINANSI);
HCONV hConv = DdeConnect(DDEIdInst, serviceName, topic_atom, (PCONVCONTEXT)NULL);
- if (hConv == NULL)
- return NULL;
+ if (hConv == (HCONV) NULL)
+ return (wxConnectionBase*) NULL;
else
{
wxDDEConnection *connection = (wxDDEConnection*) OnMakeConnection();
m_connections.Append(connection);
return connection;
}
- else return NULL;
+ else return (wxConnectionBase*) NULL;
}
}
return (DdeDisconnect((HCONV) m_hConv) != 0);
}
-bool wxDDEConnection::Execute(char *data, int size, wxDataFormat format)
+bool wxDDEConnection::Execute(char *data, int size, wxIPCFormat format)
{
DWORD result;
if (size < 0)
NULL, format, XTYP_EXECUTE, 5000, &result) ? TRUE : FALSE);
}
-char *wxDDEConnection::Request(const wxString& item, int *size, wxDataFormat format)
+char *wxDDEConnection::Request(const wxString& item, int *size, wxIPCFormat format)
{
DWORD result;
HSZ atom = DDEGetAtom(item);
else return NULL;
}
-bool wxDDEConnection::Poke(const wxString& item, char *data, int size, wxDataFormat format)
+bool wxDDEConnection::Poke(const wxString& item, char *data, int size, wxIPCFormat format)
{
DWORD result;
if (size < 0)
}
// Calls that SERVER can make
-bool wxDDEConnection::Advise(const wxString& item, char *data, int size, wxDataFormat format)
+bool wxDDEConnection::Advise(const wxString& item, char *data, int size, wxIPCFormat format)
{
if (size < 0)
size = strlen(data);
{
DWORD len = DdeGetData(hData, (LPBYTE)(connection->m_bufPtr), connection->m_bufSize, 0);
DdeFreeDataHandle(hData);
- if (connection->OnExecute(connection->m_topicName, connection->m_bufPtr, (int)len, (wxDataFormat) wFmt))
+ if (connection->OnExecute(connection->m_topicName, connection->m_bufPtr, (int)len, (wxIPCFormat) wFmt))
return (DDERETURN)DDE_FACK;
else
return (DDERETURN)DDE_FNOTPROCESSED;
CP_WINANSI);
int user_size = -1;
- char *data = connection->OnRequest(connection->m_topicName, wxString(item_name), &user_size, (wxDataFormat) wFmt);
+ char *data = connection->OnRequest(connection->m_topicName, wxString(item_name), &user_size, (wxIPCFormat) wFmt);
if (data)
{
if (user_size < 0) user_size = strlen(data);
CP_WINANSI);
DWORD len = DdeGetData(hData, (LPBYTE)(connection->m_bufPtr), connection->m_bufSize, 0);
DdeFreeDataHandle(hData);
- connection->OnPoke(connection->m_topicName, wxString(item_name), connection->m_bufPtr, (int)len, (wxDataFormat) wFmt);
+ connection->OnPoke(connection->m_topicName, wxString(item_name), connection->m_bufPtr, (int)len, (wxIPCFormat) wFmt);
return (DDERETURN)DDE_FACK;
} else return (DDERETURN)DDE_FNOTPROCESSED;
break;
DWORD len = DdeGetData(hData, (LPBYTE)(connection->m_bufPtr), connection->m_bufSize, 0);
DdeFreeDataHandle(hData);
- if (connection->OnAdvise(connection->m_topicName, wxString(item_name), connection->m_bufPtr, (int)len, (wxDataFormat) wFmt))
+ if (connection->OnAdvise(connection->m_topicName, wxString(item_name), connection->m_bufPtr, (int)len, (wxIPCFormat) wFmt))
return (DDERETURN)DDE_FACK;
else
return (DDERETURN)DDE_FNOTPROCESSED;
err = "Unrecognised error type.";
break;
}
- MessageBox(NULL, (LPCSTR)err, "DDE Error", MB_OK | MB_ICONINFORMATION);
+ MessageBox((HWND) NULL, (LPCSTR)err, "DDE Error", MB_OK | MB_ICONINFORMATION);
}
#endif