Change the AddBitmap function. Implement flat toolbar. Change
[wine] / dlls / msacm32 / msacm32_main.c
1 /*
2  *      MSACM32 library
3  *
4  *      Copyright 1998  Patrik Stridvall
5  */
6
7 #include "winbase.h"
8 #include "winerror.h"
9 #include "windef.h"
10 #include "debug.h"
11 #include "msacm.h"
12 #include "msacmdrv.h"
13 #include "winversion.h"
14
15 /**********************************************************************/
16
17 static DWORD MSACM_dwProcessesAttached = 0;
18
19 /***********************************************************************
20  *           MSACM_LibMain32 (MSACM32.init) 
21  */
22 BOOL WINAPI MSACM32_LibMain(
23   HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
24 {
25   switch(fdwReason)
26     {
27     case DLL_PROCESS_ATTACH:
28       if(MSACM_dwProcessesAttached == 0)
29         {
30           MSACM_hHeap = HeapCreate(0, 0x10000, 0);
31           MSACM_RegisterAllDrivers();
32         }
33       MSACM_dwProcessesAttached++;
34       break;
35     case DLL_PROCESS_DETACH:
36       MSACM_dwProcessesAttached--;
37       if(MSACM_dwProcessesAttached == 0)
38         {
39           MSACM_UnregisterAllDrivers();
40           HeapDestroy(MSACM_hHeap);
41           MSACM_hHeap = (HANDLE) NULL;
42         }
43       break;
44     case DLL_THREAD_ATTACH:
45       break;
46     case DLL_THREAD_DETACH:
47       break;
48     default:
49       break;
50     }
51   return TRUE;
52 }
53
54 /***********************************************************************
55  *           XRegThunkEntry (MSACM32.1)
56  * FIXME
57  *   No documentation found.
58  */
59
60 /***********************************************************************
61  *           acmGetVersion32 (MSACM32.34)
62  */
63 DWORD WINAPI acmGetVersion()
64 {
65   switch(VERSION_GetVersion()) 
66     {
67     default: 
68       FIXME(msacm, "%s not supported\n", VERSION_GetVersionName());
69     case WIN95:
70       return 0x04000000; /* 4.0.0 */
71     case NT40:
72       return 0x04000565; /* 4.0.1381 */
73     }
74 }
75
76 /***********************************************************************
77  *           acmMessage32 (MSACM32.35)
78  * FIXME
79  *   No documentation found.
80  */
81
82 /***********************************************************************
83  *           acmMetrics (MSACM32.36)
84  */
85 MMRESULT WINAPI acmMetrics(
86   HACMOBJ hao, UINT uMetric, LPVOID  pMetric)
87 {
88   PWINE_ACMOBJ pao = MSACM_GetObj(hao);
89   BOOL bLocal = TRUE;
90
91   FIXME(msacm, "(0x%08x, %d, %p): stub\n", hao, uMetric, pMetric);
92
93   switch(uMetric)
94     {
95     case ACM_METRIC_COUNT_DRIVERS:
96       bLocal = FALSE;
97     case ACM_METRIC_COUNT_LOCAL_DRIVERS:
98       if(!pao)
99         return MMSYSERR_INVALHANDLE;  
100       return MMSYSERR_NOTSUPPORTED;
101     case ACM_METRIC_COUNT_CODECS:
102       bLocal = FALSE;
103     case ACM_METRIC_COUNT_LOCAL_CODECS:
104       return MMSYSERR_NOTSUPPORTED;
105     case ACM_METRIC_COUNT_CONVERTERS:
106       bLocal = FALSE;
107     case ACM_METRIC_COUNT_LOCAL_CONVERTERS:
108       return MMSYSERR_NOTSUPPORTED;
109     case ACM_METRIC_COUNT_FILTERS:
110       bLocal = FALSE;
111     case ACM_METRIC_COUNT_LOCAL_FILTERS:
112       return MMSYSERR_NOTSUPPORTED;
113     case ACM_METRIC_COUNT_DISABLED:
114       bLocal = FALSE;
115     case ACM_METRIC_COUNT_LOCAL_DISABLED:
116       if(!pao)
117         return MMSYSERR_INVALHANDLE;  
118       return MMSYSERR_NOTSUPPORTED;
119     case ACM_METRIC_COUNT_HARDWARE:
120     case ACM_METRIC_HARDWARE_WAVE_INPUT:
121     case ACM_METRIC_HARDWARE_WAVE_OUTPUT:
122     case ACM_METRIC_MAX_SIZE_FORMAT:
123     case ACM_METRIC_MAX_SIZE_FILTER:
124     case ACM_METRIC_DRIVER_SUPPORT:
125     case ACM_METRIC_DRIVER_PRIORITY:
126     default:
127       return MMSYSERR_NOTSUPPORTED;
128     }
129   return MMSYSERR_NOERROR;
130 }