[clock01] Start improving clock.exe
Richard Cohen
richard.cohen at virgin.net
Fri Jul 11 13:19:43 CDT 2003
This is of course a vitally important application.
Changelog:
+ remove escaped newlines, bogus "exit", printf's
+ start at a sensible size
+ tidy up WndProc
+ use a timer instead of sleeping in the message loop (Ugh!)
More patches to come...
Richard.
-------------- next part --------------
diff -u programs/clock0/language.c programs/clock/language.c
--- programs/clock0/language.c 2002-07-02 03:09:39.000000000 +0100
+++ programs/clock/language.c 2003-07-11 15:55:42.000000000 +0100
@@ -33,11 +33,11 @@
/* analog clock */
- CheckMenuItem(Globals.hPropertiesMenu, 0x100, \
+ CheckMenuItem(Globals.hPropertiesMenu, 0x100,
MF_BYCOMMAND | MF_CHECKED);
- CheckMenuItem(Globals.hPropertiesMenu, 0x101, \
+ CheckMenuItem(Globals.hPropertiesMenu, 0x101,
MF_BYCOMMAND | MF_UNCHECKED);
- EnableMenuItem(Globals.hPropertiesMenu, 0x103, \
+ EnableMenuItem(Globals.hPropertiesMenu, 0x103,
MF_BYCOMMAND | MF_GRAYED);
}
else
@@ -45,22 +45,22 @@
/* digital clock */
- CheckMenuItem(Globals.hPropertiesMenu, 0x100, \
+ CheckMenuItem(Globals.hPropertiesMenu, 0x100,
MF_BYCOMMAND | MF_UNCHECKED);
- CheckMenuItem(Globals.hPropertiesMenu, 0x101, \
+ CheckMenuItem(Globals.hPropertiesMenu, 0x101,
MF_BYCOMMAND | MF_CHECKED);
- EnableMenuItem(Globals.hPropertiesMenu, 0x103, \
+ EnableMenuItem(Globals.hPropertiesMenu, 0x103,
MF_BYCOMMAND);
}
- CheckMenuItem(Globals.hPropertiesMenu, 0x105, MF_BYCOMMAND | \
+ CheckMenuItem(Globals.hPropertiesMenu, 0x105, MF_BYCOMMAND |
(Globals.bWithoutTitle ? MF_CHECKED : MF_UNCHECKED));
- CheckMenuItem(Globals.hSystemMenu, 0x10D, MF_BYCOMMAND | \
+ CheckMenuItem(Globals.hSystemMenu, 0x10D, MF_BYCOMMAND |
(Globals.bAlwaysOnTop ? MF_CHECKED : MF_UNCHECKED));
- CheckMenuItem(Globals.hPropertiesMenu, 0x107, MF_BYCOMMAND | \
+ CheckMenuItem(Globals.hPropertiesMenu, 0x107, MF_BYCOMMAND |
(Globals.bSeconds ? MF_CHECKED : MF_UNCHECKED));
- CheckMenuItem(Globals.hPropertiesMenu, 0x108, MF_BYCOMMAND | \
+ CheckMenuItem(Globals.hPropertiesMenu, 0x108, MF_BYCOMMAND |
(Globals.bDate ? MF_CHECKED : MF_UNCHECKED));
}
diff -u programs/clock0/main.c programs/clock/main.c
--- programs/clock0/main.c 2002-06-01 00:40:58.000000000 +0100
+++ programs/clock/main.c 2003-07-11 15:55:42.000000000 +0100
@@ -33,6 +33,10 @@
#include "winclock.h"
#include "commdlg.h"
+#define INITIAL_WINDOW_SIZE 200
+#define TIMER_ID 1
+#define TIMER_PERIOD 50 /* milliseconds */
+
CLOCK_GLOBALS Globals;
/***********************************************************************
@@ -153,18 +157,13 @@
LRESULT WINAPI CLOCK_WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
- PAINTSTRUCT ps;
- HDC context;
-
switch (msg) {
case WM_CREATE: {
- printf("WM_CREATE\n");
break;
}
case WM_RBUTTONUP: {
- printf("WM_RBUTTONUP\n");
Globals.bWithoutTitle = !Globals.bWithoutTitle;
LANGUAGE_UpdateMenuCheckmarks();
LANGUAGE_UpdateWindowCaption();
@@ -173,7 +172,9 @@
}
case WM_PAINT: {
- printf("WM_PAINT\n");
+ PAINTSTRUCT ps;
+ HDC context;
+
context = BeginPaint(hWnd, &ps);
if(Globals.bAnalog) {
DrawFace(context);
@@ -188,7 +189,6 @@
}
case WM_SIZE: {
- printf("WM_SIZE\n");
Globals.MaxX = LOWORD(lParam);
Globals.MaxY = HIWORD(lParam);
OldHour.DontRedraw = TRUE;
@@ -202,8 +202,12 @@
break;
}
+ case WM_TIMER: {
+ Idle(0);
+ break;
+ }
+
case WM_DESTROY: {
- printf("WM_DESTROY\n");
PostQuitMessage (0);
break;
}
@@ -211,7 +215,7 @@
default:
return DefWindowProc (hWnd, msg, wParam, lParam);
}
- return 0l;
+ return 0;
}
@@ -257,9 +261,16 @@
if (!RegisterClass (&class)) return FALSE;
+ Globals.MaxX = Globals.MaxY = INITIAL_WINDOW_SIZE;
Globals.hMainWnd = CreateWindow (szClassName, szWinName, WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT, Globals.MaxX, Globals.MaxY, 0,
- LoadMenu(Globals.hInstance, STRING_MENU_Xx), Globals.hInstance, 0);
+ CW_USEDEFAULT, CW_USEDEFAULT,
+ Globals.MaxX, Globals.MaxY, 0,
+ 0, Globals.hInstance, 0);
+
+ if (!SetTimer (Globals.hMainWnd, TIMER_ID, TIMER_PERIOD, NULL)) {
+ MessageBox(0, "No available timers", szWinName, MB_ICONEXCLAMATION | MB_OK);
+ return FALSE;
+ }
LANGUAGE_LoadMenus();
SetMenu(Globals.hMainWnd, Globals.hMainMenu);
@@ -269,18 +280,11 @@
ShowWindow (Globals.hMainWnd, show);
UpdateWindow (Globals.hMainWnd);
- while (TRUE) {
- Sleep(1);
- if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
- if (msg.message == WM_QUIT) return msg.wParam;
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- Idle(NULL);
- }
- else Idle(NULL);
+ while (GetMessage(&msg, 0, 0, 0)) {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
}
- /* We will never reach the following statement ! */
return 0;
}
diff -u programs/clock0/README programs/clock/README
--- programs/clock0/README 1998-09-24 04:43:38.000000000 +0100
+++ programs/clock/README 2003-07-11 15:59:54.000000000 +0100
@@ -3,13 +3,6 @@
==============
This is a first attempt to realize a desktop clock for Wine as done in
- Windows. It'a an early release and most of the code is still broken.
+ Windows. It's an early release and some of the code is still broken.
- Please see file TODO for things to do and keep the file ChangeLog
- up to date.
-
- Code is currently under heavy construction. Please direct patches and
- additions to my personal email address <mbaur at g26.ethz.ch>
-
- If you think that the compiled binary is too big, you can reduce its size
- with the command 'strip clock' (please don't try this on libraries).
+ Originally contributed by <mbaur at g26.ethz.ch>
Only in programs/clock/: README~
diff -u programs/clock0/TODO programs/clock/TODO
--- programs/clock0/TODO 2002-03-27 21:17:01.000000000 +0000
+++ programs/clock/TODO 2003-07-11 15:55:42.000000000 +0100
@@ -8,9 +8,6 @@
- Font Handling of Digital Clock.
(Does not work probably due to Winelib)
-- Implement Timer Mechanism instead Polling.
- Clock does not run if menu is being selected (?).
-
- Complete translation for the following languages : Pt,Sk
- Add new .rc resources for all languages you know. That's in fact very easy.
diff -u programs/clock0/winclock.c programs/clock/winclock.c
--- programs/clock0/winclock.c 2002-06-01 00:40:58.000000000 +0100
+++ programs/clock/winclock.c 2003-07-11 15:55:42.000000000 +0100
@@ -205,7 +205,6 @@
GetLocalTime(&st);
S = st.wSecond;
- if (nLastSecond==S) { exit; }
nLastSecond = S;
H = st.wHour;
M = st.wMinute;
More information about the wine-patches
mailing list