[ODBCCP32]
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 22 Jun 2014 09:33:46 +0000 (09:33 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 22 Jun 2014 09:33:46 +0000 (09:33 +0000)
The control panel automatically runs this applet without clicking on it, fix this wrong behaviour.
Patch by Lee Schröder
CORE-8323 #resolve #comment Thanks :)

svn path=/trunk/; revision=63625

reactos/dll/cpl/odbccp32/odbccp32.c

index ce77120..194ea05 100644 (file)
@@ -19,36 +19,47 @@ CPlApplet(HWND hwndCpl,
                  LPARAM lParam1,
                  LPARAM lParam2)
 {
-       if (ODBCProc == NULL)
-       {
-               TCHAR szBuffer[MAX_PATH];
+    switch (uMsg)
+    {
+        case CPL_INIT:
+            return TRUE;
 
-               if (ExpandEnvironmentStrings(_T("%systemroot%\\system32\\odbccp32.dll"),
-                                                                        szBuffer,
-                                                                        sizeof(szBuffer) / sizeof(TCHAR)) > 0)
-               {
-                       hLibrary = LoadLibrary(szBuffer);
-                       if (hLibrary)
-                       {
-                               ODBCProc = (APPLET_PROC)GetProcAddress(hLibrary, "ODBCCPlApplet");
-                       }
-               }
-       }
+        case CPL_DBLCLK:
+        {
+            if (ODBCProc == NULL)
+            {
+                TCHAR szBuffer[MAX_PATH];
 
-       if (ODBCProc)
-       {
-               return ODBCProc(hwndCpl, uMsg, lParam1, lParam2);
-       }
-       else
-       {
-               if(hLibrary)
-               {
-                       FreeLibrary(hLibrary);
-               }
+                if (ExpandEnvironmentStrings(_T("%systemroot%\\system32\\odbccp32.dll"),
+                                             szBuffer,
+                                             sizeof(szBuffer) / sizeof(TCHAR)) > 0)
+                {
+                    hLibrary = LoadLibrary(szBuffer);
+                    if (hLibrary)
+                    {
+                        ODBCProc = (APPLET_PROC)GetProcAddress(hLibrary, "ODBCCPlApplet");
+                    }
+                }
+            }
+
+            if (ODBCProc)
+            {
+                return ODBCProc(hwndCpl, uMsg, lParam1, lParam2);
+            }
+            else
+            {
+                if (hLibrary)
+                {
+                    FreeLibrary(hLibrary);
+                }
+
+                TerminateProcess(GetCurrentProcess(), -1);
+                return (LONG)-1;
+            }
+        }
+    }
 
-               TerminateProcess(GetCurrentProcess(), -1);
-               return (LONG)-1;
-       }
+    return FALSE;
 }