Fixed a silly VGA-emulation palette bug.
[wine/multimedia.git] / dlls / comctl32 / datetime.c
blobb9949762e3139da0d8df6cbe0df39648a2a86d42
1 /*
2 * Date and time picker control
4 * Copyright 1998, 1999 Eric Kohl
6 * NOTES
7 * This is just a dummy control. An author is needed! Any volunteers?
8 * I will only improve this control once in a while.
9 * Eric <ekohl@abo.rhein-zeitung.de>
11 * TODO:
12 * - All messages.
13 * - All notifications.
17 #include "win.h"
18 #include "commctrl.h"
19 #include "datetime.h"
20 #include "debug.h"
23 #define DATETIME_GetInfoPtr(hwnd) ((DATETIME_INFO *)GetWindowLongA (hwnd, 0))
30 static LRESULT
31 DATETIME_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
33 DATETIME_INFO *infoPtr;
35 /* allocate memory for info structure */
36 infoPtr = (DATETIME_INFO *)COMCTL32_Alloc (sizeof(DATETIME_INFO));
37 if (infoPtr == NULL) {
38 ERR (datetime, "could not allocate info memory!\n");
39 return 0;
42 SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
45 /* initialize info structure */
49 return 0;
53 static LRESULT
54 DATETIME_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
56 DATETIME_INFO *infoPtr = DATETIME_GetInfoPtr (hwnd);
58 /* free datetime info data */
59 COMCTL32_Free (infoPtr);
61 return 0;
67 LRESULT WINAPI
68 DATETIME_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
70 switch (uMsg)
73 case DTM_GETSYSTEMTIME:
74 FIXME (datetime, "Unimplemented msg DTM_GETSYSTEMTIME\n");
75 return GDT_VALID;
77 case DTM_SETSYSTEMTIME:
78 FIXME (datetime, "Unimplemented msg DTM_SETSYSTEMTIME\n");
79 return 1;
81 case DTM_GETRANGE:
82 FIXME (datetime, "Unimplemented msg DTM_GETRANGE\n");
83 return 0;
85 case DTM_SETRANGE:
86 FIXME (datetime, "Unimplemented msg DTM_SETRANGE\n");
87 return 1;
89 case DTM_SETFORMATA:
90 FIXME (datetime, "Unimplemented msg DTM_SETFORMAT32A\n");
91 return 1;
93 case DTM_SETFORMATW:
94 FIXME (datetime, "Unimplemented msg DTM_SETFORMAT32W\n");
95 return 1;
97 case DTM_SETMCCOLOR:
98 FIXME (datetime, "Unimplemented msg DTM_SETMCCOLOR\n");
99 return 0;
101 case DTM_GETMCCOLOR:
102 FIXME (datetime, "Unimplemented msg DTM_GETMCCOLOR\n");
103 return 0;
105 case DTM_GETMONTHCAL:
106 FIXME (datetime, "Unimplemented msg DTM_GETMONTHCAL\n");
107 return 0;
109 case DTM_SETMCFONT:
110 FIXME (datetime, "Unimplemented msg DTM_SETMCFONT\n");
111 return 0;
113 case DTM_GETMCFONT:
114 FIXME (datetime, "Unimplemented msg DTM_GETMCFONT\n");
115 return 0;
117 case WM_CREATE:
118 return DATETIME_Create (hwnd, wParam, lParam);
120 case WM_DESTROY:
121 return DATETIME_Destroy (hwnd, wParam, lParam);
123 default:
124 if (uMsg >= WM_USER)
125 ERR (datetime, "unknown msg %04x wp=%08x lp=%08lx\n",
126 uMsg, wParam, lParam);
127 return DefWindowProcA (hwnd, uMsg, wParam, lParam);
129 return 0;
133 VOID
134 DATETIME_Register (VOID)
136 WNDCLASSA wndClass;
138 if (GlobalFindAtomA (DATETIMEPICK_CLASSA)) return;
140 ZeroMemory (&wndClass, sizeof(WNDCLASSA));
141 wndClass.style = CS_GLOBALCLASS;
142 wndClass.lpfnWndProc = (WNDPROC)DATETIME_WindowProc;
143 wndClass.cbClsExtra = 0;
144 wndClass.cbWndExtra = sizeof(DATETIME_INFO *);
145 wndClass.hCursor = LoadCursorA (0, IDC_ARROWA);
146 wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
147 wndClass.lpszClassName = DATETIMEPICK_CLASSA;
149 RegisterClassA (&wndClass);
153 VOID
154 DATETIME_Unregister (VOID)
156 if (GlobalFindAtomA (DATETIMEPICK_CLASSA))
157 UnregisterClassA (DATETIMEPICK_CLASSA, (HINSTANCE)NULL);