2012-03-17 4 views
2

저는 Silverlight 5로 다중 모니터 지원을 위해 P/Invoke (게시하려면 게시)를 사용하고 있습니다. 재생하는 동안 창 크기와 위치로 인해 두 개의 모니터 중 어느 모니터에 추가 창이 최대화되었는지 확인할 수있었습니다. 나는 (당신처럼) 재생을 계속하고 결정 다음 오른쪽에 (1024 × 768) 차로 왼쪽 모니터에 내 노트북 ​​(X 800 1280)로창이 추가 모니터에 최대화시기를 결정하는 것은 무엇입니까?

  • 를 공식이었다 왼쪽 = - (폭/2) + 1271
  • 오른쪽에 기본 모니터와 노트북 (1280 x 800)으로 내 모니터 (1024 x 768)가있는 수식은 왼쪽 = - (너비/2) + 1014
  • 왼쪽에는 모니터 (1024 x 768), 오른쪽에는 랩톱 (1280 x 800)이 있고 수식은 왼쪽에 노트북 (1280 x 800)이있는 왼쪽 = - (너비/2) - 11
  • 오른쪽에 기본 (1024 x 768) 모니터로, 공식은 Left = - (Wi 10 차의 왼쪽에, 일정한 = -10 차의 오른쪽)하지만 정확한 아니다 - DTH/2) -이 패턴 (상수 = 화면 너비해야처럼 10

것 같습니다. 지금은 다른 모니터를 사용할 수 없습니다. 누구든지 그것이 무엇이되어야하는지, 또는 이것이 나의 특별한 설정의 인공물일까요?

(참고 : 이러한 한계가있다 - 그들은 왼쪽 또는 폭의 모든 값에 대해 작동하지 않습니다)

답변

2

이 문제가 MonitorFromWindow의 동작과 일치 될 것으로 보인다. 문서에서 :

MonitorFromWindow 함수는 지정된 윈도우의 경계 사각형과 가장 큰 교차 영역을 가진 디스플레이 모니터에 대한 핸들을 검색합니다.

이것이 계산 결과와 일치하는지 확인하십시오. 그것은해야한다.

+0

설명에 약간의 세부 사항이 빠져 있지 않는 한 그것은 거의 확실하지는 않습니다. 이 경우, 두 번째 모니터 (RHS)에 창을 밀어 넣은 Left 및 Width의 값은 (WHS/2) + Left = (RHS 모니터의 첫 번째 픽셀)를 제공해야합니다. 픽셀은 0-1279로 번호가 매겨지기 때문에 왼쪽 (1 차) 모니터는 1280 와이드, 너비는 400, 왼쪽은 1080이므로 1280이 첫 번째 임)하지만 실제로는 ((RHS 모니터의 첫 번째 픽셀) - 10) 또는 1270 위의 경우. 그리고 다른 1 차/2 차 모니터 위치와 유사하게 (정확히 10은 아님). – SGarratt