다른 해상도에서 실행되는 두 개의 모니터가 있습니다. 왼쪽 모니터는 1920x1200입니다. 오른쪽 모니터 (기본 모니터)는 1920x1080입니다.SetWindowPos 및 해상도가 다른 여러 모니터
SetWindowPos를 사용하여 창을 왼쪽 모니터의 전체 세로 높이로 가져 가고 싶습니다.
여기 내가 무엇 :
x = GetSystemMetrics(SM_XVIRTUALSCREEN);
hMonitor = monitorFromPoint(x, 0, MONITOR_DEFAULTTONEAREST);
MONITORINFO moninfo;
moninfo.cbSize = sizeof(MONITORINFO);
GetMonitorInfo(hMonitor, moninfo);
height = moninfo.rcWork.bottom - moninfo.rcWork.top;
SetWindowPos(hwnd, 0, moninfo.rcWork.left, moninfo.rcWord.top, width, height, SWP_NOZORDER | SWP_NOACTIVATE);
I는 그 높이가 계산된다 (1200)를 확인했다 (즉 대상 모니터의 수직 해상도 B/C 예상).
그러나 SetWindowPos를 호출 한 후 창 사각형은 화면의 전체 높이를 채우지 않습니다 (실제로는 1080입니다).
Public Sub testSWP()
Dim hwnd As Long
hwnd = &H1D2F2C
SetWindowPos &H1D2F2C, 0, -1900, 0, 150, 1200, SWP_NOZORDER Or SWP_NOACTIVATE
Dim r As RECT
GetWindowRect hwnd, r
' at this point, r.bottom = 1080
End Sub
이 잘 좋은 (GetWindowRect 문서는 좌표가 클라이언트 공간에있을 것이라고, 나는 그는 Win32이의 해상도 사이에 번역되어 있으리라 믿고있어 :
는 난 단지 웃음에 대한 VBA에이 시도 내 기본 및 보조 모니터
대상의 높이와 기본 모니터의 비율에 따라 수직 치수가 팽창 할 준비가되었습니다. 작동 할 것이라고 확신하지만, 많이 보입니다. 농구 팀이 뛰어 내야 만한다. 아마도 나는 클라이언트의 화면 크기를 결정하는 더 좋은 방법을 모르고있을 것이다. 좌표 '?
문제를 해결 한 경우 질문을 삭제하거나 자판을 게시해야합니다. 제목에 "해결 된"을 추가하는 것은 SO가 작동하는 방식이 아닙니다. (자세한 내용은 [help/self-answer]를 참조하십시오.) –