]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dde.cpp
wxTopLevelWindows is now a wxWindowList, better compatibility with the old
[wxWidgets.git] / src / msw / dde.cpp
index 5cdd6170367d82402a7ac00a938f7235bc792486..d8fe4dfa5a7c7abe35a34fe58c2a8fa9c26c126d 100644 (file)
 #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__
@@ -118,6 +122,21 @@ void wxDDECleanUp()
     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)
 {
@@ -197,7 +216,7 @@ bool wxDDEServer::Create(const wxString& server_name)
   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;
@@ -309,8 +328,8 @@ wxConnectionBase *wxDDEClient::MakeConnection(const wxString& /* host */, const
   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();
@@ -322,7 +341,7 @@ wxConnectionBase *wxDDEClient::MakeConnection(const wxString& /* host */, const
       m_connections.Append(connection);
       return connection;
     }
-    else return NULL;
+    else return (wxConnectionBase*) NULL;
   }
 }
 
@@ -778,7 +797,7 @@ void DDEPrintError(void)
       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