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; }