From adc64f21ca17d13e24d0e723481b52bf33d0e306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 22 Jun 2014 09:33:46 +0000 Subject: [PATCH] =?UTF-8?q?[ODBCCP32]=20The=20control=20panel=20automatica?= =?UTF-8?q?lly=20runs=20this=20applet=20without=20clicking=20on=20it,=20fi?= =?UTF-8?q?x=20this=20wrong=20behaviour.=20Patch=20by=20Lee=20Schr=C3=B6de?= =?UTF-8?q?r=20CORE-8323=20#resolve=20#comment=20Thanks=20:)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=63625 --- reactos/dll/cpl/odbccp32/odbccp32.c | 65 +++++++++++++++++------------ 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/reactos/dll/cpl/odbccp32/odbccp32.c b/reactos/dll/cpl/odbccp32/odbccp32.c index ce77120626b..194ea052467 100644 --- a/reactos/dll/cpl/odbccp32/odbccp32.c +++ b/reactos/dll/cpl/odbccp32/odbccp32.c @@ -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"); + } + } + } - TerminateProcess(GetCurrentProcess(), -1); - return (LONG)-1; - } + if (ODBCProc) + { + return ODBCProc(hwndCpl, uMsg, lParam1, lParam2); + } + else + { + if (hLibrary) + { + FreeLibrary(hLibrary); + } + + TerminateProcess(GetCurrentProcess(), -1); + return (LONG)-1; + } + } + } + + return FALSE; }