From: george82 Date: Sat, 29 Jan 2005 15:03:06 +0000 (+0000) Subject: Implemented the speed changing by edit control. X-Git-Tag: v0.0.90~384^2~706 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=4ea27f67e104a6d95ac1854c746fe32409b4a1f8;p=tigervnc.git Implemented the speed changing by edit control. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@129 3789f03b-4d11-0410-bbf8-ca57d06f2519 --- diff --git a/rfbplayer/resource.h b/rfbplayer/resource.h index 54ab200a..249a7d93 100644 --- a/rfbplayer/resource.h +++ b/rfbplayer/resource.h @@ -24,13 +24,14 @@ #define ID_HELP_COMMANDLINESEITCHES 40026 #define ID_HELP_ABOUT 40027 #define ID_OPTIONS 40029 +#define ID_RETURN 40044 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 133 -#define _APS_NEXT_COMMAND_VALUE 40044 +#define _APS_NEXT_COMMAND_VALUE 40045 #define _APS_NEXT_CONTROL_VALUE 1003 #define _APS_NEXT_SYMED_VALUE 101 #endif diff --git a/rfbplayer/rfbplayer.cxx b/rfbplayer/rfbplayer.cxx index 3fab7911..7cd1fe35 100644 --- a/rfbplayer/rfbplayer.cxx +++ b/rfbplayer/rfbplayer.cxx @@ -44,6 +44,7 @@ extern const char* buildTime; // -=- RfbPlayer's defines #define strcasecmp _stricmp +#define MAX_SPEED 10 #define ID_TOOLBAR 500 #define ID_PLAY 510 @@ -310,6 +311,25 @@ RfbPlayer::processMainMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case ID_FULLSCREEN: MessageBox(getMainHandle(), "It is not working yet!", "RfbPlayer", MB_OK); break; + case ID_RETURN: + // Update the speed if return pressed in speedEdit + if (speedEdit == GetFocus()) { + char speedStr[20], *stopStr; + GetWindowText(speedEdit, speedStr, sizeof(speedStr)); + double speed = strtod(speedStr, &stopStr); + if (speed > 0) { + speed = min(MAX_SPEED, speed); + // Update speedUpDown position + SendMessage(speedUpDown, UDM_SETPOS, + 0, MAKELONG((short)(speed / 0.5), 0)); + } else { + speed = getSpeed(); + } + setSpeed(speed); + sprintf(speedStr, "%.2f", speed); + SetWindowText(speedEdit, speedStr); + } + break; } break; @@ -347,24 +367,30 @@ RfbPlayer::processMainMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) switch (((NMHDR*)lParam)->code) { case UDN_DELTAPOS: if ((int)wParam == ID_SPEED_UPDOWN) { + BOOL lResult = FALSE; char speedStr[20] = "\0"; DWORD speedRange = SendMessage(speedUpDown, UDM_GETRANGE, 0, 0); LPNM_UPDOWN upDown = (LPNM_UPDOWN)lParam; double speed; - // the out of range checking + // The out of range checking if (upDown->iDelta > 0) { speed = min(upDown->iPos + upDown->iDelta, LOWORD(speedRange)) * 0.5; } else { + // It's need to round the UpDown position + if ((upDown->iPos * 0.5) != getSpeed()) { + upDown->iDelta = 0; + lResult = TRUE; + } speed = max(upDown->iPos + upDown->iDelta, HIWORD(speedRange)) * 0.5; } _gcvt(speed, 5, speedStr); sprintf(speedStr, "%.2f", speed); SetWindowText(speedEdit, speedStr); setSpeed(speed); + return lResult; } - return 0; - }; + } return 0; case WM_CLOSE: diff --git a/rfbplayer/rfbplayer.rc b/rfbplayer/rfbplayer.rc index 8ac1ea3c..6d64aefe 100644 --- a/rfbplayer/rfbplayer.rc +++ b/rfbplayer/rfbplayer.rc @@ -183,6 +183,7 @@ BEGIN VK_F5, ID_ZOOM_50, VIRTKEY, NOINVERT VK_F6, ID_ZOOM_100, VIRTKEY, NOINVERT VK_F7, ID_ZOOM_200, VIRTKEY, NOINVERT + VK_RETURN, ID_RETURN, VIRTKEY, NOINVERT VK_RETURN, ID_FULLSCREEN, VIRTKEY, ALT, NOINVERT VK_SPACE, ID_PLAYPAUSE, VIRTKEY, NOINVERT "X", ID_EXIT, VIRTKEY, ALT, NOINVERT