[FMIFS]
[reactos.git] / reactos / dll / cpl / odbccp32 / odbccp32.c
1 /*
2 * PROJECT: ReactOS ODBC Control Panel Applet
3 * FILE: dll/cpl/main/main.c
4 * PURPOSE: applet initialization
5 * PROGRAMMER: Johannes Anderwald
6 */
7
8 #include "odbccp32.h"
9
10 HINSTANCE hApplet = NULL;
11 APPLET_PROC ODBCProc = NULL;
12 HMODULE hLibrary = NULL;
13
14
15 LONG
16 CALLBACK
17 CPlApplet(HWND hwndCpl,
18 UINT uMsg,
19 LPARAM lParam1,
20 LPARAM lParam2)
21 {
22 switch (uMsg)
23 {
24 case CPL_INIT:
25 return TRUE;
26
27 case CPL_DBLCLK:
28 {
29 if (ODBCProc == NULL)
30 {
31 TCHAR szBuffer[MAX_PATH];
32
33 if (ExpandEnvironmentStrings(_T("%systemroot%\\system32\\odbccp32.dll"),
34 szBuffer,
35 sizeof(szBuffer) / sizeof(TCHAR)) > 0)
36 {
37 hLibrary = LoadLibrary(szBuffer);
38 if (hLibrary)
39 {
40 ODBCProc = (APPLET_PROC)GetProcAddress(hLibrary, "ODBCCPlApplet");
41 }
42 }
43 }
44
45 if (ODBCProc)
46 {
47 return ODBCProc(hwndCpl, uMsg, lParam1, lParam2);
48 }
49 else
50 {
51 if (hLibrary)
52 {
53 FreeLibrary(hLibrary);
54 }
55
56 TerminateProcess(GetCurrentProcess(), -1);
57 return (LONG)-1;
58 }
59 }
60 }
61
62 return FALSE;
63 }
64
65
66 BOOL
67 WINAPI
68 DllMain(HINSTANCE hinstDLL,
69 DWORD dwReason,
70 LPVOID lpReserved)
71 {
72 INITCOMMONCONTROLSEX InitControls;
73 UNREFERENCED_PARAMETER(lpReserved);
74
75 switch(dwReason)
76 {
77 case DLL_PROCESS_ATTACH:
78 case DLL_THREAD_ATTACH:
79 {
80 InitControls.dwSize = sizeof(INITCOMMONCONTROLSEX);
81 InitControls.dwICC = ICC_LISTVIEW_CLASSES | ICC_UPDOWN_CLASS | ICC_BAR_CLASSES;
82 InitCommonControlsEx(&InitControls);
83
84 hApplet = hinstDLL;
85 break;
86 }
87 }
88
89 return TRUE;
90 }