[Ttssh2-commit] [7716] WM_DPICHANGEメッセージのハンドリングを改善

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2019年 5月 29日 (水) 00:23:02 JST


Revision: 7716
          https://osdn.net/projects/ttssh2/scm/svn/commits/7716
Author:   zmatsuo
Date:     2019-05-29 00:23:02 +0900 (Wed, 29 May 2019)
Log Message:
-----------
WM_DPICHANGEメッセージのハンドリングを改善

- DPIが変化するときWM_DPICHANGEメッセージが送られてくる
  - DPIの異なるモニタをまたぐとき
  - モニタの設定でDPIを変更したとき
- 従来は、最初に来たWM_DPICHANGEから1sec間メッセージを無視する実装
  - ウィンドウをまたぐときに次のループが発生していたのをキャンセルするため
      DPIが変化→WM_DPICHANGEが送られてくる→
      表示内容が変化→ウィンドウサイズが変化→
      モニタのまたぎ具合が変化→DPIが変化→
  - この実装のため、DPIが素早く変化するとき対応できなかった
- WM_DPICHANGEメッセージと一緒に送られてくる提案された位置に移動するようにした
  - マウスポインタとリサイズ後のウィンドウサイズなどを考慮した位置とサイズを提案してくれるようだ

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

-------------- next part --------------
Modified: trunk/teraterm/teraterm/vtwin.cpp
===================================================================
--- trunk/teraterm/teraterm/vtwin.cpp	2019-05-27 14:59:58 UTC (rev 7715)
+++ trunk/teraterm/teraterm/vtwin.cpp	2019-05-28 15:23:02 UTC (rev 7716)
@@ -6304,15 +6304,15 @@
 	FreeTTDLG();
 }
 
-LRESULT CVTWindow::OnDpiChanged(WPARAM wParam, LPARAM lParam)
+LRESULT CVTWindow::OnDpiChanged(WPARAM, LPARAM lParam)
 {
-	static DWORD preTime = 0;
-	DWORD currentTime = GetTickCount();
-	if (currentTime - preTime < 1000) {
-		return 0;
-	}
-	preTime = currentTime;
-
+	const RECT *SuggestedWindowRect = (RECT *)lParam;
+	// \x92\xF1\x88Ă\xB3\x82ꂽ\x88ʒu\x82Ɉړ\xAE\x82\xB7\x82\xE9
+	// \x83T\x83C\x83Y\x82\xCDDpiChange()\x81\xA8DispChangeWinSize()\x82Őݒ肳\x82\xEA\x82\xE9
+	::SetWindowPos(m_hWnd, NULL,
+				   SuggestedWindowRect->left, SuggestedWindowRect->top,
+				   0, 0,
+				   SWP_NOSIZE | SWP_NOZORDER);
 	DpiChanged();
 	return TRUE;
 }


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