[Ttssh2-commit] [5579] バージョン情報のEdit Controlの横スクロールバーを、「CTRL / SHIFT + マウスホイール」で

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2014年 5月 5日 (月) 01:54:12 JST


Revision: 5579
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5579
Author:   yutakapon
Date:     2014-05-05 01:54:12 +0900 (Mon, 05 May 2014)
Log Message:
-----------
バージョン情報のEdit Controlの横スクロールバーを、「CTRL/SHIFT + マウスホイール」で
左右にスクロールできるようにした。

Modified Paths:
--------------
    trunk/ttssh2/ttxssh/ttxssh.c

-------------- next part --------------
Modified: trunk/ttssh2/ttxssh/ttxssh.c
===================================================================
--- trunk/ttssh2/ttxssh/ttxssh.c	2014-05-04 15:49:47 UTC (rev 5578)
+++ trunk/ttssh2/ttxssh/ttxssh.c	2014-05-04 16:54:12 UTC (rev 5579)
@@ -2467,15 +2467,51 @@
 	}
 }
 
-static WNDPROC g_defAboutDlgEditWndProc;
+// WM_MOUSEWHEEL \x82\xCD winuser.h \x83w\x83b\x83_\x82Ő錾\x82\xB3\x82\xEA\x82Ă\xA2\x82܂\xB7\x82\xAA\x81A#define _WIN32_WINNT 0x0400 \x82\xAA\x90錾\x82\xB3\x82\xEA\x82Ă\xA2\x82Ȃ\xA2\x82ƔF\x8E\xAF\x82\xB3\x82\xEA\x82܂\xB9\x82\xF1\x81B
+#define WM_MOUSEWHEEL                   0x020A
+#define WHEEL_DELTA                     120
+#define GET_WHEEL_DELTA_WPARAM(wParam)  ((short)HIWORD(wParam))
+#define GET_KEYSTATE_WPARAM(wParam)     (LOWORD(wParam))
 
+static WNDPROC g_defAboutDlgEditWndProc;  // Edit Control\x82̃T\x83u\x83N\x83\x89\x83X\x89\xBB\x97p
+static int g_deltaSumAboutDlg = 0;        // \x83}\x83E\x83X\x83z\x83C\x81[\x83\x8B\x82\xCCDelta\x97ݐϗp
+
 static LRESULT CALLBACK AboutDlgEditWindowProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) 
 {
-	// Edit control\x8F\xE3\x82\xC5 CTRL+A \x82\xF0\x89\x9F\x89\xBA\x82\xB7\x82\xE9\x82ƁA\x83e\x83L\x83X\x83g\x82\xF0\x91S\x91I\x91\xF0\x82\xB7\x82\xE9\x81B
-	if (msg == WM_KEYDOWN && wp == 'A' && GetKeyState(VK_CONTROL) < 0) {
-		PostMessage(hWnd, EM_SETSEL, 0, -1);
-		return 0;
-    }
+	WORD keys;
+	short delta;
+	BOOL page;
+
+	switch (msg) {
+		case WM_KEYDOWN:
+			// Edit control\x8F\xE3\x82\xC5 CTRL+A \x82\xF0\x89\x9F\x89\xBA\x82\xB7\x82\xE9\x82ƁA\x83e\x83L\x83X\x83g\x82\xF0\x91S\x91I\x91\xF0\x82\xB7\x82\xE9\x81B
+			if (wp == 'A' && GetKeyState(VK_CONTROL) < 0) {
+				PostMessage(hWnd, EM_SETSEL, 0, -1);
+				return 0;
+			}
+			break;
+
+		case WM_MOUSEWHEEL:
+			// CTRLorSHIFT + \x83}\x83E\x83X\x83z\x83C\x81[\x83\x8B\x82̏ꍇ\x81A\x89\xA1\x83X\x83N\x83\x8D\x81[\x83\x8B\x82\xB3\x82\xB9\x82\xE9\x81B
+			keys = GET_KEYSTATE_WPARAM(wp);
+			delta = GET_WHEEL_DELTA_WPARAM(wp);
+			page = keys & (MK_CONTROL | MK_SHIFT);
+
+			if (page == 0)
+				break;
+
+			g_deltaSumAboutDlg += delta;
+
+			if (g_deltaSumAboutDlg >= WHEEL_DELTA) {
+				g_deltaSumAboutDlg -= WHEEL_DELTA;
+				SendMessage(hWnd, WM_HSCROLL, SB_PAGELEFT , 0);
+			} else if (g_deltaSumAboutDlg <= -WHEEL_DELTA) {
+				g_deltaSumAboutDlg += WHEEL_DELTA;
+				SendMessage(hWnd, WM_HSCROLL, SB_PAGERIGHT, 0);
+			}
+
+			break;
+	}
     return CallWindowProc(g_defAboutDlgEditWndProc, hWnd, msg, wp, lp);
 }
 
@@ -2530,6 +2566,7 @@
 		SetFocus(GetDlgItem(dlg, IDOK));
 
 		// Edit control\x82\xF0\x83T\x83u\x83N\x83\x89\x83X\x89\xBB\x82\xB7\x82\xE9\x81B
+		g_deltaSumAboutDlg = 0;
 		g_defAboutDlgEditWndProc = (WNDPROC)SetWindowLongPtr(GetDlgItem(dlg, IDC_ABOUTTEXT), GWLP_WNDPROC, (LONG_PTR)AboutDlgEditWindowProc);
 
 		return FALSE;



Ttssh2-commit メーリングリストの案内
Back to archive index