zoomin:
- allow to cange zoom factor and display zoom factor
- add accelerator table
Modified: trunk/rosapps/devutils/zoomin/framewnd.c
Modified: trunk/rosapps/devutils/zoomin/framewnd.h
Modified: trunk/rosapps/devutils/zoomin/main.c
Modified: trunk/rosapps/devutils/zoomin/main.h
Modified: trunk/rosapps/devutils/zoomin/resource.h
Modified: trunk/rosapps/devutils/zoomin/zoomin.rc

Modified: trunk/rosapps/devutils/zoomin/framewnd.c
--- trunk/rosapps/devutils/zoomin/framewnd.c	2005-10-12 19:15:54 UTC (rev 18414)
+++ trunk/rosapps/devutils/zoomin/framewnd.c	2005-10-12 20:20:18 UTC (rev 18415)
@@ -42,11 +42,34 @@
 BOOL s_dragging = FALSE;
 
 
+ // zoom range
+
+#define MIN_ZOOM	1
+#define MAX_ZOOM	16
+
+
 ////////////////////////////////////////////////////////////////////////////////
-// Local module support methods
 //
+// FUNCTION: SetZoom()
+//
+// PURPOSE:  Change zoom level
+//
 
+static void SetZoom(HWND hWnd, int factor)
+{
+	TCHAR buffer[MAX_LOADSTRING];
 
+	if (factor>=MIN_ZOOM && factor<=MAX_ZOOM) {
+		s_factor = factor;
+
+		SetScrollPos(hWnd, SB_VERT, s_factor, TRUE);
+
+		wsprintf(buffer, TEXT("%s  %dx"), szTitle, s_factor);
+		SetWindowText(hWnd, buffer);
+	}
+}
+
+
 ////////////////////////////////////////////////////////////////////////////////
 //
 //	FUNCTION: _CmdWndProc(HWND, unsigned, WORD, LONG)
@@ -70,6 +93,10 @@
 		// TODO:
 		break;
 
+	case ID_REFRESH:
+		InvalidateRect(hWnd, NULL, FALSE);
+		break;
+
 	default:
 		return FALSE;
 	}
@@ -89,6 +116,8 @@
 	switch (message) {
 	case WM_CREATE:
 		SetTimer(hWnd, 0, 200, NULL);	// refresh display all 200 ms
+		SetScrollRange(hWnd, SB_VERT, 1, MAX_ZOOM, FALSE);
+		SetZoom(hWnd, s_factor);
 		break;
 
 	case WM_COMMAND:
@@ -107,10 +136,11 @@
 		hdcMem = GetDC(GetDesktopWindow());
 
 		GetClientRect(hWnd, &clnt);
-		size.cx = clnt.right / s_factor;
-		size.cy = clnt.bottom / s_factor;
+		size.cx = (clnt.right + s_factor-1) / s_factor;
+		size.cy = (clnt.bottom + s_factor-1) / s_factor;
 
-		StretchBlt(ps.hdc, 0, 0, size.cx*s_factor, size.cy*s_factor, hdcMem, s_srcPos.x, s_srcPos.y, size.cx, size.cy, SRCCOPY);
+		StretchBlt(ps.hdc, 0, 0, size.cx*s_factor, size.cy*s_factor,
+					hdcMem, s_srcPos.x, s_srcPos.y, size.cx, size.cy, SRCCOPY);
 
 		ReleaseDC(GetDesktopWindow(), hdcMem);
 		EndPaint(hWnd, &ps);
@@ -181,6 +211,20 @@
 		}
 		break;
 
+	case WM_VSCROLL:
+		switch(wParam) {
+		  case SB_LINEUP:
+		  case SB_PAGEUP:
+			SetZoom(hWnd, s_factor-1);
+			break;
+
+		  case SB_LINEDOWN:
+		  case SB_PAGEDOWN:
+			SetZoom(hWnd, s_factor+1);
+			break;
+		}
+		break;
+
 	case WM_DESTROY:
 		KillTimer(hWnd, 0);
 		PostQuitMessage(0);

Modified: trunk/rosapps/devutils/zoomin/framewnd.h
--- trunk/rosapps/devutils/zoomin/framewnd.h	2005-10-12 19:15:54 UTC (rev 18414)
+++ trunk/rosapps/devutils/zoomin/framewnd.h	2005-10-12 20:20:18 UTC (rev 18415)
@@ -23,17 +23,10 @@
 #ifndef __FRAMEWND_H__
 #define __FRAMEWND_H__
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
 LRESULT CALLBACK FrameWndProc(HWND, UINT, WPARAM, LPARAM);
 
 
-#ifdef __cplusplus
-};
-#endif
+#define WNDCLASS_ZOOMIN TEXT("ZOOMIN")
 
-#endif // __FRAMEWND_H__
 
+#endif // __FRAMEWND_H__

Modified: trunk/rosapps/devutils/zoomin/main.c
--- trunk/rosapps/devutils/zoomin/main.c	2005-10-12 19:15:54 UTC (rev 18414)
+++ trunk/rosapps/devutils/zoomin/main.c	2005-10-12 20:20:18 UTC (rev 18415)
@@ -38,7 +38,6 @@
 HMENU hMenuFrame;
 
 TCHAR szTitle[MAX_LOADSTRING];
-TCHAR szFrameClass[MAX_LOADSTRING];
 
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -61,7 +60,7 @@
         LoadCursor(0, IDC_ARROW),
         0,//(HBRUSH)(COLOR_BTNFACE+1),
         0/*lpszMenuName*/,
-        szFrameClass,
+        WNDCLASS_ZOOMIN,
         (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_ZOOMIN), IMAGE_ICON,
             GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED)
     };
@@ -70,7 +69,7 @@
 	hMenuFrame = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_ZOOMIN_MENU));
 
     hFrameWnd = CreateWindowEx(0, (LPCTSTR)(int)hFrameWndClass, szTitle,
-                    WS_OVERLAPPEDWINDOW | WS_EX_CLIENTEDGE,
+                    WS_OVERLAPPEDWINDOW | WS_EX_CLIENTEDGE | WS_VSCROLL,
                     CW_USEDEFAULT, CW_USEDEFAULT, 250, 250,
                     NULL, hMenuFrame, hInstance, NULL/*lpParam*/);
 
@@ -80,6 +79,7 @@
 
     ShowWindow(hFrameWnd, nCmdShow);
     UpdateWindow(hFrameWnd);
+
     return TRUE;
 }
 
@@ -97,22 +97,21 @@
                      int       nCmdShow)
 {
     MSG msg;
-    HACCEL hAccel;
+	HACCEL hAccel;
 
     // Initialize global strings
     LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
-    LoadString(hInstance, IDC_ZOOMIN, szFrameClass, MAX_LOADSTRING);
 
     // Perform application initialization:
     if (!InitInstance(hInstance, nCmdShow)) {
         return FALSE;
     }
 
-    hAccel = LoadAccelerators(hInstance, (LPCTSTR)IDC_ZOOMIN);
+	hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_ZOOMIN));
 
     // Main message loop:
     while (GetMessage(&msg, (HWND)NULL, 0, 0)) {
-        if (!TranslateAccelerator(msg.hwnd, hAccel, &msg)) {
+		if (!TranslateAccelerator(msg.hwnd, hAccel, &msg)) {
             TranslateMessage(&msg);
             DispatchMessage(&msg);
         }

Modified: trunk/rosapps/devutils/zoomin/main.h
--- trunk/rosapps/devutils/zoomin/main.h	2005-10-12 19:15:54 UTC (rev 18414)
+++ trunk/rosapps/devutils/zoomin/main.h	2005-10-12 20:20:18 UTC (rev 18415)
@@ -23,11 +23,6 @@
 #ifndef __MAIN_H__
 #define __MAIN_H__
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
 #include "resource.h"
 
 #define MAX_LOADSTRING  100
@@ -40,11 +35,6 @@
 extern HMENU     hMenuFrame;
 
 extern TCHAR szTitle[];
-extern TCHAR szFrameClass[];
 
-#ifdef __cplusplus
-};
-#endif
 
 #endif // __MAIN_H__
-

Modified: trunk/rosapps/devutils/zoomin/resource.h
--- trunk/rosapps/devutils/zoomin/resource.h	2005-10-12 19:15:54 UTC (rev 18414)
+++ trunk/rosapps/devutils/zoomin/resource.h	2005-10-12 20:20:18 UTC (rev 18415)
@@ -7,9 +7,8 @@
 #define IDS_APP_TITLE                   103
 #define IDI_ZOOMIN                      107
 #define IDI_SMALL                       108
-#define IDC_ZOOMIN                      109
-#define IDR_ZOOMIN_MENU                 110
-#define IDD_DIALOG1                     111
+#define IDR_ZOOMIN_MENU                 109
+#define IDR_ZOOMIN                      110
 
 #define ID_EDIT_EXIT                    32700
 #define ID_EDIT_COPY                    32701
@@ -17,5 +16,7 @@
 #define ID_OPTIONS_REFRESH_RATE         32704
 #define ID_HELP_ABOUT                   32703
 
+#define ID_REFRESH                      40001
+
 #define IDC_STATIC                      -1
 

Modified: trunk/rosapps/devutils/zoomin/zoomin.rc
--- trunk/rosapps/devutils/zoomin/zoomin.rc	2005-10-12 19:15:54 UTC (rev 18414)
+++ trunk/rosapps/devutils/zoomin/zoomin.rc	2005-10-12 20:20:18 UTC (rev 18415)
@@ -31,12 +31,14 @@
 
 IDR_ZOOMIN_MENU MENU DISCARDABLE 
 BEGIN
+    POPUP "&File"
+    BEGIN
+        MENUITEM "E&xit\tAlt-F4",               ID_EDIT_EXIT
+    END
     POPUP "&Edit"
     BEGIN
         MENUITEM "&Copy\tCtrl+C",               ID_EDIT_COPY, GRAYED
-        MENUITEM "&Refresh\tF5",                ID_EDIT_REFRESH, GRAYED
-        MENUITEM SEPARATOR
-        MENUITEM "E&xit\tAlt-F4",               ID_EDIT_EXIT
+        MENUITEM "&Refresh\tF5",                ID_EDIT_REFRESH
     END
     POPUP "&Options"
     BEGIN
@@ -69,26 +71,21 @@
 
 /////////////////////////////////////////////////////////////////////////////
 //
-// Dialog
+// String Table
 //
 
-IDD_DIALOG1 DIALOG DISCARDABLE  0, 0, 186, 95
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Dialog"
-FONT 8, "MS Sans Serif"
+STRINGTABLE DISCARDABLE 
 BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,129,7,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,129,24,50,14
+    IDS_APP_TITLE           "ReactOS Zoomin"
 END
 
 
 /////////////////////////////////////////////////////////////////////////////
 //
-// String Table
+// Accelerator
 //
 
-STRINGTABLE DISCARDABLE 
+IDR_ZOOMIN ACCELERATORS DISCARDABLE 
 BEGIN
-    IDS_APP_TITLE           "ReactOS Zoomin"
-    IDC_ZOOMIN              "ZOOMIN"
+    VK_F5,          ID_REFRESH,             VIRTKEY, NOINVERT
 END