mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 14:05:42 +00:00
zoomin:
- allow to cange zoom factor and display zoom factor - add accelerator table svn path=/trunk/; revision=18415
This commit is contained in:
parent
e7045161ac
commit
4fe5d38bfa
6 changed files with 76 additions and 52 deletions
|
@ -42,9 +42,32 @@ static RECT s_lastSrc = {-1,-1,-1,-1}; // last cursor position
|
||||||
BOOL s_dragging = FALSE;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -70,6 +93,10 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
// TODO:
|
// TODO:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ID_REFRESH:
|
||||||
|
InvalidateRect(hWnd, NULL, FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -89,6 +116,8 @@ LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
switch (message) {
|
switch (message) {
|
||||||
case WM_CREATE:
|
case WM_CREATE:
|
||||||
SetTimer(hWnd, 0, 200, NULL); // refresh display all 200 ms
|
SetTimer(hWnd, 0, 200, NULL); // refresh display all 200 ms
|
||||||
|
SetScrollRange(hWnd, SB_VERT, 1, MAX_ZOOM, FALSE);
|
||||||
|
SetZoom(hWnd, s_factor);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
|
@ -107,10 +136,11 @@ LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
hdcMem = GetDC(GetDesktopWindow());
|
hdcMem = GetDC(GetDesktopWindow());
|
||||||
|
|
||||||
GetClientRect(hWnd, &clnt);
|
GetClientRect(hWnd, &clnt);
|
||||||
size.cx = clnt.right / s_factor;
|
size.cx = (clnt.right + s_factor-1) / s_factor;
|
||||||
size.cy = clnt.bottom / 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);
|
ReleaseDC(GetDesktopWindow(), hdcMem);
|
||||||
EndPaint(hWnd, &ps);
|
EndPaint(hWnd, &ps);
|
||||||
|
@ -181,6 +211,20 @@ LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||||
}
|
}
|
||||||
break;
|
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:
|
case WM_DESTROY:
|
||||||
KillTimer(hWnd, 0);
|
KillTimer(hWnd, 0);
|
||||||
PostQuitMessage(0);
|
PostQuitMessage(0);
|
||||||
|
|
|
@ -23,17 +23,10 @@
|
||||||
#ifndef __FRAMEWND_H__
|
#ifndef __FRAMEWND_H__
|
||||||
#define __FRAMEWND_H__
|
#define __FRAMEWND_H__
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
LRESULT CALLBACK FrameWndProc(HWND, UINT, WPARAM, LPARAM);
|
LRESULT CALLBACK FrameWndProc(HWND, UINT, WPARAM, LPARAM);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#define WNDCLASS_ZOOMIN TEXT("ZOOMIN")
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // __FRAMEWND_H__
|
#endif // __FRAMEWND_H__
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,6 @@ HWND hFrameWnd;
|
||||||
HMENU hMenuFrame;
|
HMENU hMenuFrame;
|
||||||
|
|
||||||
TCHAR szTitle[MAX_LOADSTRING];
|
TCHAR szTitle[MAX_LOADSTRING];
|
||||||
TCHAR szFrameClass[MAX_LOADSTRING];
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -61,7 +60,7 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
||||||
LoadCursor(0, IDC_ARROW),
|
LoadCursor(0, IDC_ARROW),
|
||||||
0,//(HBRUSH)(COLOR_BTNFACE+1),
|
0,//(HBRUSH)(COLOR_BTNFACE+1),
|
||||||
0/*lpszMenuName*/,
|
0/*lpszMenuName*/,
|
||||||
szFrameClass,
|
WNDCLASS_ZOOMIN,
|
||||||
(HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_ZOOMIN), IMAGE_ICON,
|
(HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_ZOOMIN), IMAGE_ICON,
|
||||||
GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED)
|
GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED)
|
||||||
};
|
};
|
||||||
|
@ -70,7 +69,7 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
||||||
hMenuFrame = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_ZOOMIN_MENU));
|
hMenuFrame = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_ZOOMIN_MENU));
|
||||||
|
|
||||||
hFrameWnd = CreateWindowEx(0, (LPCTSTR)(int)hFrameWndClass, szTitle,
|
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,
|
CW_USEDEFAULT, CW_USEDEFAULT, 250, 250,
|
||||||
NULL, hMenuFrame, hInstance, NULL/*lpParam*/);
|
NULL, hMenuFrame, hInstance, NULL/*lpParam*/);
|
||||||
|
|
||||||
|
@ -80,6 +79,7 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
||||||
|
|
||||||
ShowWindow(hFrameWnd, nCmdShow);
|
ShowWindow(hFrameWnd, nCmdShow);
|
||||||
UpdateWindow(hFrameWnd);
|
UpdateWindow(hFrameWnd);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,22 +97,21 @@ int APIENTRY WinMain(HINSTANCE hInstance,
|
||||||
int nCmdShow)
|
int nCmdShow)
|
||||||
{
|
{
|
||||||
MSG msg;
|
MSG msg;
|
||||||
HACCEL hAccel;
|
HACCEL hAccel;
|
||||||
|
|
||||||
// Initialize global strings
|
// Initialize global strings
|
||||||
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
|
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
|
||||||
LoadString(hInstance, IDC_ZOOMIN, szFrameClass, MAX_LOADSTRING);
|
|
||||||
|
|
||||||
// Perform application initialization:
|
// Perform application initialization:
|
||||||
if (!InitInstance(hInstance, nCmdShow)) {
|
if (!InitInstance(hInstance, nCmdShow)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
hAccel = LoadAccelerators(hInstance, (LPCTSTR)IDC_ZOOMIN);
|
hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_ZOOMIN));
|
||||||
|
|
||||||
// Main message loop:
|
// Main message loop:
|
||||||
while (GetMessage(&msg, (HWND)NULL, 0, 0)) {
|
while (GetMessage(&msg, (HWND)NULL, 0, 0)) {
|
||||||
if (!TranslateAccelerator(msg.hwnd, hAccel, &msg)) {
|
if (!TranslateAccelerator(msg.hwnd, hAccel, &msg)) {
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,11 +23,6 @@
|
||||||
#ifndef __MAIN_H__
|
#ifndef __MAIN_H__
|
||||||
#define __MAIN_H__
|
#define __MAIN_H__
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
||||||
#define MAX_LOADSTRING 100
|
#define MAX_LOADSTRING 100
|
||||||
|
@ -40,11 +35,6 @@ extern HWND hFrameWnd;
|
||||||
extern HMENU hMenuFrame;
|
extern HMENU hMenuFrame;
|
||||||
|
|
||||||
extern TCHAR szTitle[];
|
extern TCHAR szTitle[];
|
||||||
extern TCHAR szFrameClass[];
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // __MAIN_H__
|
#endif // __MAIN_H__
|
||||||
|
|
||||||
|
|
|
@ -7,9 +7,8 @@
|
||||||
#define IDS_APP_TITLE 103
|
#define IDS_APP_TITLE 103
|
||||||
#define IDI_ZOOMIN 107
|
#define IDI_ZOOMIN 107
|
||||||
#define IDI_SMALL 108
|
#define IDI_SMALL 108
|
||||||
#define IDC_ZOOMIN 109
|
#define IDR_ZOOMIN_MENU 109
|
||||||
#define IDR_ZOOMIN_MENU 110
|
#define IDR_ZOOMIN 110
|
||||||
#define IDD_DIALOG1 111
|
|
||||||
|
|
||||||
#define ID_EDIT_EXIT 32700
|
#define ID_EDIT_EXIT 32700
|
||||||
#define ID_EDIT_COPY 32701
|
#define ID_EDIT_COPY 32701
|
||||||
|
@ -17,5 +16,7 @@
|
||||||
#define ID_OPTIONS_REFRESH_RATE 32704
|
#define ID_OPTIONS_REFRESH_RATE 32704
|
||||||
#define ID_HELP_ABOUT 32703
|
#define ID_HELP_ABOUT 32703
|
||||||
|
|
||||||
|
#define ID_REFRESH 40001
|
||||||
|
|
||||||
#define IDC_STATIC -1
|
#define IDC_STATIC -1
|
||||||
|
|
||||||
|
|
|
@ -31,12 +31,14 @@ IDI_ZOOMIN ICON DISCARDABLE "res/zoomin.ico"
|
||||||
|
|
||||||
IDR_ZOOMIN_MENU MENU DISCARDABLE
|
IDR_ZOOMIN_MENU MENU DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
|
POPUP "&File"
|
||||||
|
BEGIN
|
||||||
|
MENUITEM "E&xit\tAlt-F4", ID_EDIT_EXIT
|
||||||
|
END
|
||||||
POPUP "&Edit"
|
POPUP "&Edit"
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY, GRAYED
|
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY, GRAYED
|
||||||
MENUITEM "&Refresh\tF5", ID_EDIT_REFRESH, GRAYED
|
MENUITEM "&Refresh\tF5", ID_EDIT_REFRESH
|
||||||
MENUITEM SEPARATOR
|
|
||||||
MENUITEM "E&xit\tAlt-F4", ID_EDIT_EXIT
|
|
||||||
END
|
END
|
||||||
POPUP "&Options"
|
POPUP "&Options"
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -67,21 +69,6 @@ BEGIN
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Dialog
|
|
||||||
//
|
|
||||||
|
|
||||||
IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 95
|
|
||||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
|
||||||
CAPTION "Dialog"
|
|
||||||
FONT 8, "MS Sans Serif"
|
|
||||||
BEGIN
|
|
||||||
DEFPUSHBUTTON "OK",IDOK,129,7,50,14
|
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,129,24,50,14
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// String Table
|
// String Table
|
||||||
|
@ -90,5 +77,15 @@ END
|
||||||
STRINGTABLE DISCARDABLE
|
STRINGTABLE DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_APP_TITLE "ReactOS Zoomin"
|
IDS_APP_TITLE "ReactOS Zoomin"
|
||||||
IDC_ZOOMIN "ZOOMIN"
|
END
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Accelerator
|
||||||
|
//
|
||||||
|
|
||||||
|
IDR_ZOOMIN ACCELERATORS DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
VK_F5, ID_REFRESH, VIRTKEY, NOINVERT
|
||||||
END
|
END
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue