4 * Copyright 1998 Marcel Baur <mbaur@g26.ethz.ch>
6 * Clock is partially based on
7 * - Program Manager by Ulrich Schmied
8 * - rolex.c by Jim Peterson
21 CLOCK_GLOBALS Globals;
23 /***********************************************************************
27 * All handling of main menu events
30 int CLOCK_MenuCommand (WPARAM wParam)
34 Globals.bAnalog = TRUE;
35 LANGUAGE_UpdateMenuCheckmarks();
36 SendMessage(Globals.hMainWnd, WM_PAINT, 0, 0);
40 Globals.bAnalog = FALSE;
41 LANGUAGE_UpdateMenuCheckmarks();
42 SendMessage(Globals.hMainWnd, WM_PAINT, 0, 0);
46 MAIN_FileChooseFont();
49 case CL_WITHOUT_TITLE: {
50 Globals.bWithoutTitle = !Globals.bWithoutTitle;
51 LANGUAGE_UpdateWindowCaption();
52 LANGUAGE_UpdateMenuCheckmarks();
56 Globals.bAlwaysOnTop = !Globals.bAlwaysOnTop;
57 LANGUAGE_UpdateMenuCheckmarks();
61 Globals.bSeconds = !Globals.bSeconds;
62 LANGUAGE_UpdateMenuCheckmarks();
63 SendMessage(Globals.hMainWnd, WM_PAINT, 0, 0);
67 Globals.bDate = !Globals.bDate;
68 LANGUAGE_UpdateMenuCheckmarks();
69 LANGUAGE_UpdateWindowCaption();
72 case CL_INFO_LICENSE: {
73 WineLicense(Globals.hMainWnd);
76 case CL_INFO_NO_WARRANTY: {
77 WineWarranty(Globals.hMainWnd);
80 case CL_INFO_ABOUT_WINE: {
81 ShellAbout(Globals.hMainWnd, "Clock", "Clock\n" WINE_RELEASE_INFO, 0);
84 /* Handle languages */
86 LANGUAGE_DefaultHandle(wParam);
91 VOID MAIN_FileChooseFont(VOID) {
96 font.lStructSize = sizeof(font);
97 font.hwndOwner = Globals.hMainWnd;
105 font.lpTemplateName = 0;
106 font.hInstance = Globals.hInstance;
107 /* font.lpszStyle = LF_FACESIZE; */
112 if (ChooseFont(&font)) {
118 /***********************************************************************
123 LRESULT WINAPI CLOCK_WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
131 printf("WM_CREATE\n");
136 printf("WM_RBUTTONUP\n");
137 Globals.bWithoutTitle = !Globals.bWithoutTitle;
138 LANGUAGE_UpdateMenuCheckmarks();
139 LANGUAGE_UpdateWindowCaption();
140 UpdateWindow (Globals.hMainWnd);
145 printf("WM_PAINT\n");
146 context = BeginPaint(hWnd, &ps);
147 if(Globals.bAnalog) {
161 Globals.MaxX = LOWORD(lParam);
162 Globals.MaxY = HIWORD(lParam);
163 OldHour.DontRedraw = TRUE;
164 OldMinute.DontRedraw = TRUE;
165 OldSecond.DontRedraw = TRUE;
170 CLOCK_MenuCommand(wParam);
175 printf("WM_DESTROY\n");
181 return DefWindowProc (hWnd, msg, wParam, lParam);
188 /***********************************************************************
193 int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show)
198 char szClassName[] = "CLClass"; /* To make sure className >= 0x10000 */
199 char szWinName[] = "Clock";
202 Globals.bAnalog = TRUE;
203 Globals.bSeconds = TRUE;
204 Globals.lpszIniFile = "clock.ini";
205 Globals.lpszIcoFile = "clock.ico";
207 Globals.hInstance = hInstance;
208 Globals.hMainIcon = ExtractIcon(Globals.hInstance,
209 Globals.lpszIcoFile, 0);
211 if (!Globals.hMainIcon) Globals.hMainIcon =
212 LoadIcon(0, MAKEINTRESOURCE(DEFAULTICON));
215 class.style = CS_HREDRAW | CS_VREDRAW;
216 class.lpfnWndProc = CLOCK_WndProc;
217 class.cbClsExtra = 0;
218 class.cbWndExtra = 0;
219 class.hInstance = Globals.hInstance;
220 class.hIcon = LoadIcon (0, IDI_APPLICATION);
221 class.hCursor = LoadCursor (0, IDC_ARROW);
222 class.hbrBackground = GetStockObject (GRAY_BRUSH);
223 class.lpszMenuName = 0;
224 class.lpszClassName = szClassName;
227 if (!RegisterClass (&class)) return FALSE;
229 Globals.hMainWnd = CreateWindow (szClassName, szWinName, WS_OVERLAPPEDWINDOW,
230 CW_USEDEFAULT, CW_USEDEFAULT, Globals.MaxX, Globals.MaxY, 0,
231 LoadMenu(Globals.hInstance, STRING_MENU_Xx), Globals.hInstance, 0);
233 LANGUAGE_SelectByName("En");
234 SetMenu(Globals.hMainWnd, Globals.hMainMenu);
236 LANGUAGE_UpdateMenuCheckmarks();
238 ShowWindow (Globals.hMainWnd, show);
239 UpdateWindow (Globals.hMainWnd);
243 if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
244 if (msg.message == WM_QUIT) return msg.wParam;
245 TranslateMessage(&msg);
246 DispatchMessage(&msg);
252 /* We will never reach the following statement ! */