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
19 // #include "commdlg.h"
25 void LIBWINE_Register_De();
26 void LIBWINE_Register_En();
27 void LIBWINE_Register_Sw();
30 CLOCK_GLOBALS Globals
;
32 /***********************************************************************
36 * All handling of main menu events
39 int CLOCK_MenuCommand (WPARAM wParam
)
43 Globals
.bAnalog
= TRUE
;
44 CheckMenuItem(Globals
.hPropertiesMenu
, CL_ANALOG
, \
45 MF_BYCOMMAND
| MF_CHECKED
);
46 CheckMenuItem(Globals
.hPropertiesMenu
, CL_DIGITAL
, \
47 MF_BYCOMMAND
| MF_UNCHECKED
);
51 Globals
.bAnalog
= FALSE
;
52 CheckMenuItem(Globals
.hPropertiesMenu
, CL_ANALOG
, \
53 MF_BYCOMMAND
| MF_UNCHECKED
);
54 CheckMenuItem(Globals
.hPropertiesMenu
, CL_DIGITAL
, \
55 MF_BYCOMMAND
| MF_CHECKED
);
61 fontl.lStructSize = 0;
62 fontl.hwndOwner = Globals.hMainWnd;
70 fontl.lpTemplateName = 0;
71 fontl.hInstance = Globals.hInstance;
77 if (ChooseFont(&font));
80 case CL_WITHOUT_TITLE
:
81 Globals
.bWithoutTitle
= !Globals
.bWithoutTitle
;
82 CheckMenuItem(Globals
.hPropertiesMenu
, CL_WITHOUT_TITLE
, MF_BYCOMMAND
| \
83 (Globals
.bWithoutTitle
? MF_CHECKED
: MF_UNCHECKED
));
87 Globals
.bAlwaysOnTop
= !Globals
.bAlwaysOnTop
;
88 CheckMenuItem(Globals
.hPropertiesMenu
, CL_ON_TOP
, MF_BYCOMMAND
| \
89 (Globals
.bAlwaysOnTop
? MF_CHECKED
: MF_UNCHECKED
));
92 Globals
.bSeconds
= !Globals
.bSeconds
;
93 CheckMenuItem(Globals
.hPropertiesMenu
, CL_SECONDS
, MF_BYCOMMAND
| \
94 (Globals
.bSeconds
? MF_CHECKED
: MF_UNCHECKED
));
97 Globals
.bDate
= !Globals
.bDate
;
98 CheckMenuItem(Globals
.hPropertiesMenu
, CL_DATE
, MF_BYCOMMAND
| \
99 (Globals
.bDate
? MF_CHECKED
: MF_UNCHECKED
));
101 case CL_INFO_LICENSE
:
102 WineLicense(Globals
.hMainWnd
, Globals
.lpszLanguage
);
104 case CL_INFO_NO_WARRANTY
:
105 WineWarranty(Globals
.hMainWnd
, Globals
.lpszLanguage
);
107 case CL_INFO_ABOUT_WINE
:
108 ShellAbout(Globals
.hMainWnd
, "Clock", "Clock\n" WINE_RELEASE_INFO
, 0);
112 LANGUAGE_DefaultLanguageHandle(wParam
);
119 /***********************************************************************
124 LRESULT
CLOCK_WndProc (HWND hWnd
, UINT msg
, WPARAM wParam
, LPARAM lParam
)
132 printf("WM_CREATE\n");
136 printf("WM_RBUTTONUP\n");
140 printf("WM_PAINT\n");
141 context
= BeginPaint(hWnd
, &ps
);
142 if(Globals
.bAnalog
) {
154 Globals
.MaxX
= LOWORD(lParam
);
155 Globals
.MaxY
= HIWORD(lParam
);
159 CLOCK_MenuCommand(wParam
);
163 printf("WM_DESTROY\n");
168 return DefWindowProc (hWnd
, msg
, wParam
, lParam
);
175 /***********************************************************************
180 void DumpGlobals(void) {
182 printf("DumpGlobals()\n");
183 printf(" Globals.lpszIniFile: %s\n", Globals
.lpszIniFile
);
184 printf(" Globals.lpszIcoFile: %s\n", Globals
.lpszIcoFile
);
185 printf("Globals.lpszLanguage: %s\n", Globals
.lpszLanguage
);
186 printf(" Globals.hInstance: %i\n", Globals
.hInstance
);
187 printf(" Globals.hMainMenu: %i\n", Globals
.hMainMenu
);
191 int PASCAL
WinMain (HANDLE hInstance
, HANDLE prev
, LPSTR cmdline
, int show
)
195 char className
[] = "CLClass"; /* To make sure className >= 0x10000 */
196 char winName
[] = "Clock";
198 #if defined(WINELIB) && !defined(HAVE_WINE_CONSTRUCTOR)
199 /* Register resources */
200 LIBWINE_Register_De();
201 LIBWINE_Register_En();
202 LIBWINE_Register_Sw();
205 printf("WinMain()\n");
209 Globals
.bAnalog
= TRUE
;
210 Globals
.bSeconds
= TRUE
;
211 Globals
.lpszIniFile
= "clock.ini";
212 Globals
.lpszIcoFile
= "clock.ico";
214 /* Select Language */
215 LANGUAGE_InitLanguage();
217 Globals
.hInstance
= hInstance
;
218 Globals
.hMainIcon
= ExtractIcon(Globals
.hInstance
,
219 Globals
.lpszIcoFile
, 0);
220 if (!Globals
.hMainIcon
) Globals
.hMainIcon
=
221 LoadIcon(0, MAKEINTRESOURCE(DEFAULTICON
));
226 class.style
= CS_HREDRAW
| CS_VREDRAW
;
227 class.lpfnWndProc
= CLOCK_WndProc
;
228 class.cbClsExtra
= 0;
229 class.cbWndExtra
= 0;
230 class.hInstance
= Globals
.hInstance
;
231 class.hIcon
= LoadIcon (0, IDI_APPLICATION
);
232 class.hCursor
= LoadCursor (0, IDC_ARROW
);
233 class.hbrBackground
= GetStockObject (GRAY_BRUSH
);
234 class.lpszMenuName
= "\0";
235 class.lpszClassName
= (SEGPTR
)className
;
237 if (!RegisterClass (&class))
240 Globals
.hMainWnd
= CreateWindow (className
, winName
, WS_OVERLAPPEDWINDOW
,
241 CW_USEDEFAULT
, 0, CW_USEDEFAULT
, Globals
.MaxX
, Globals
.MaxY
,
242 LoadMenu(Globals
.hInstance
, STRING_MENU_Xx
),
243 Globals
.hInstance
, 0);
245 LANGUAGE_SelectLanguageByName(Globals
.lpszLanguage
);
246 SetMenu(Globals
.hMainWnd
, Globals
.hMainMenu
);
247 ShowWindow (Globals
.hMainWnd
, show
);
248 UpdateWindow (Globals
.hMainWnd
);
252 if (PeekMessage(&msg
, 0, 0, 0, PM_REMOVE
)) {
253 if (msg
.message
== WM_QUIT
) return msg
.wParam
;
254 TranslateMessage(&msg
);
255 DispatchMessage(&msg
);
261 // We will never reach the following statement !