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 ! */