[Ttssh2-commit] [8508] ダイアログのサイズ計算前にステータスバーを追加

scmno****@osdn***** scmno****@osdn*****
2020年 1月 27日 (月) 00:14:04 JST


Revision: 8508
          https://osdn.net/projects/ttssh2/scm/svn/commits/8508
Author:   zmatsuo
Date:     2020-01-27 00:14:04 +0900 (Mon, 27 Jan 2020)
Log Message:
-----------
ダイアログのサイズ計算前にステータスバーを追加

- switchで意図しないリサイズ処理を行わないようにした
- デスクトップ領域取得関数を追加

Modified Paths:
--------------
    trunk/teraterm/teraterm/clipboarddlg.cpp

-------------- next part --------------
Modified: trunk/teraterm/teraterm/clipboarddlg.cpp
===================================================================
--- trunk/teraterm/teraterm/clipboarddlg.cpp	2020-01-26 15:13:58 UTC (rev 8507)
+++ trunk/teraterm/teraterm/clipboarddlg.cpp	2020-01-26 15:14:04 UTC (rev 8508)
@@ -46,6 +46,28 @@
 #include "clipboarddlg.h"
 #include "compat_win.h"
 
+static void GetDesktopRectFromPoint(POINT p, RECT *rect)
+{
+	if (pMonitorFromPoint == NULL) {
+		// NT4.0, 95 \x82̓}\x83\x8B\x83`\x83\x82\x83j\x83^API\x82ɔ\xF1\x91Ή\x9E
+		SystemParametersInfo(SPI_GETWORKAREA, 0, rect, 0);
+	}
+	else {
+		// \x83}\x83\x8B\x83`\x83\x82\x83j\x83^\x82\xAA\x83T\x83|\x81[\x83g\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x8Fꍇ
+		HMONITOR hm;
+		POINT pt;
+		MONITORINFO mi;
+
+		pt.x = p.x;
+		pt.y = p.y;
+		hm = pMonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST);
+
+		mi.cbSize = sizeof(MONITORINFO);
+		pGetMonitorInfoA(hm, &mi);
+		*rect = mi.rcWork;
+	}
+}
+
 static INT_PTR CALLBACK OnClipboardDlgProc(HWND hDlgWnd, UINT msg, WPARAM wp, LPARAM lp)
 {
 	static const DlgTextInfo TextInfos[] = {
@@ -75,6 +97,12 @@
 				SetDlgItemTextA(hDlgWnd, IDC_EDIT, data->strA_ptr);
 			}
 
+			// \x83\x8A\x83T\x83C\x83Y\x83A\x83C\x83R\x83\x93\x82\xF0\x89E\x89\xBA\x82ɕ\\x8E\xA6\x82\xB3\x82\xB9\x82\xBD\x82\xA2\x82̂ŁA\x83X\x83e\x81[\x83^\x83X\x83o\x81[\x82\xF0\x95t\x82\xAF\x82\xE9\x81B
+			InitCommonControls();
+			hStatus = CreateStatusWindow(
+				WS_CHILD | WS_VISIBLE |
+				CCS_BOTTOM | SBARS_SIZEGRIP, NULL, hDlgWnd, 1);
+
 			if (ActiveWin == IdVT) { // VT Window
 				/*
 				 * Caret off \x8E\x9E\x82\xC9 GetCaretPos() \x82Ő\xB3\x8Am\x82ȏꏊ\x82\xAA\x8E\xE6\x82\xEA\x82Ȃ\xA2\x82̂ŁA
@@ -105,23 +133,8 @@
 			// \x83L\x83\x83\x83\x8C\x83b\x83g\x82\xAA\x89\xE6\x96ʂ\xA9\x82\xE7\x82͂ݏo\x82\xB5\x82Ă\xA2\x82\xE9\x82Ƃ\xAB\x82ɓ\\x82\xE8\x95t\x82\xAF\x82\xF0\x82\xB7\x82\xE9\x82\xC6
 			// \x8Am\x94F\x83E\x83C\x83\x93\x83h\x83E\x82\xAA\x8C\xA9\x82\xA6\x82\xE9\x82Ƃ\xB1\x82\xEB\x82ɕ\\x8E\xA6\x82\xB3\x82\xEA\x82Ȃ\xA2\x82\xB1\x82Ƃ\xAA\x82\xA0\x82\xE9\x81B
 			// \x83E\x83C\x83\x93\x83h\x83E\x82\xA9\x82\xE7\x82͂ݏo\x82\xB5\x82\xBD\x8Fꍇ\x82ɒ\xB2\x90߂\xB7\x82\xE9 (2008.4.24 maya)
-			if (pMonitorFromPoint == NULL) {
-				// NT4.0, 95 \x82̓}\x83\x8B\x83`\x83\x82\x83j\x83^API\x82ɔ\xF1\x91Ή\x9E
-				SystemParametersInfo(SPI_GETWORKAREA, 0, &rc_dsk, 0);
-			}
-			else {
-				HMONITOR hm;
-				POINT pt;
-				MONITORINFO mi;
+			GetDesktopRectFromPoint(p, &rc_dsk);
 
-				pt.x = p.x;
-				pt.y = p.y;
-				hm = pMonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST);
-
-				mi.cbSize = sizeof(MONITORINFO);
-				pGetMonitorInfoA(hm, &mi);
-				rc_dsk = mi.rcWork;
-			}
 			GetWindowRect(hDlgWnd, &rc_dlg);
 			dlg_height = rc_dlg.bottom-rc_dlg.top;
 			dlg_width  = rc_dlg.right-rc_dlg.left;
@@ -163,12 +176,6 @@
 			             ts.PasteDialogSize.cx, ts.PasteDialogSize.cy,
 			             SWP_NOZORDER | SWP_NOMOVE);
 
-			// \x83\x8A\x83T\x83C\x83Y\x83A\x83C\x83R\x83\x93\x82\xF0\x89E\x89\xBA\x82ɕ\\x8E\xA6\x82\xB3\x82\xB9\x82\xBD\x82\xA2\x82̂ŁA\x83X\x83e\x81[\x83^\x83X\x83o\x81[\x82\xF0\x95t\x82\xAF\x82\xE9\x81B
-			InitCommonControls();
-			hStatus = CreateStatusWindow(
-				WS_CHILD | WS_VISIBLE |
-				CCS_BOTTOM | SBARS_SIZEGRIP, NULL, hDlgWnd, 1);
-
 			return TRUE;
 
 		case WM_COMMAND:
@@ -200,6 +207,7 @@
 				default:
 					return FALSE;
 			}
+			return TRUE;
 
 		case WM_SIZE:
 			{


Ttssh2-commit メーリングリストの案内