2016-06-07 1 views
0

'최상위 수준'의 HWND 크기를 얻으려고합니다. 즉, 현재 Firefox/Windows 탐색기/등의 기본 HWND 크기를 원합니다. 창문.최소화/일반/최대화 상태에 관계없이 창 크기를 가져옵니다.

GetWindowRect() 창이 최소화되어 있으면 작동하지 않습니다. GetWindowPlacement()은 대부분의 경우 작동하며 (최소화 포함) 창 'SW_SHOWNORMAL 치수를 반환합니다. 따라서 Windows 탐색기의 크기를 100 픽셀 x 100 픽셀로 조정하면 창을 최대화하고 GetWindowPlacement()을 호출하면 SW_SHOWNORMAL 크기가 100x100이됩니다. 최대화 된 치수, 즉 의 현재 치수를 원합니다.

내 모든 사례를 충족시킬 수있는 모든 WinAPI 기능에 맞는 크기가 있습니까? 즉, 현재 창 크기가 표시되면 (현재와 관계없이) 말해 주시겠습니까? 그렇지 않다면 나는 GetWindowPlacement()에 전화해야 할 것 같아요, 창이 최소화되어 있는지 확인하십시오. true이면 일반 치수를 사용하고 그렇지 않으면 GetWindowRect()을 호출합니다.

+1

귀하의 질문은 실제로 의미가 없습니다. 당신은 * 현재 * 치수를 원한다고 말하지만, 창이 최소화되어 있으면 정의에 의해 보이지 않고 무 차원 적입니다. –

답변

0

사용 IsIconic(hwnd)는 현재 윈도우 핸들의 상태를 확인하려면 다음

  1. 정상적인 경우/상태를 극대화 할 수 있습니다. 치수를 보려면 GetWindowRect(hwnd, &rect)을 사용하십시오. 대신에 -32000와 RECT (왼쪽, 위쪽)를 비교하는) 사용 IsIconic (을 : 상태를 최소화하면
  2. ,이 "3 & 5 - Restore/Minimize The Window"

업데이트처럼 그 크기를 얻을 수있는 창을 복원한다 @IInspectable 및 @Raymond Chen이 주석 처리 한 창 핸들 상태를 결정합니다.

+0

-32000에 대한 비교를위한 공식 문서에 대한 링크는 어디에 있습니까? – IInspectable

+2

최소화 된 창을 감지하려면'IsIconic'을 사용하십시오. 최소화 된 창의 좌표는 문서화되어 있지 않으며 항상 -32000보다 작지는 않습니다. –

+0

@IInspectable 최소화 할 때 -32000에 대한 정식 문서가 없습니다. Google 샘플 코드 및 출력 로그 결과입니다. – GSP

1

GetWindowPlacement은 윈도우의 정상 위치뿐만 아니라 최소 및 최대 위치로 WINDOWPLACEMENT 구조를 채울 것입니다.

리턴 된 창 위치는 화면 좌표가 아닌 작업 공간에 있으므로 스크린 좌표가 아닌 작업 공간을 허용하는 호출에서 사용해야한다는 점이 중요합니다.

실제적으로 이것은 사용자가 작업 표시 줄을 화면 상단에 놓은 경우 "0,0"이 작업 표시 줄 아래의 왼쪽 상단 픽셀에 해당 함을 의미합니다.

최대화되었을 때 창의 크기를 가져 오는 측면에서, 창을 최대화하는 모니터의 크기에 해당합니다. 이 경우에는 질문이 실제로 더 이상 의미가 없기 때문에이 질문에 대답 할 수있는 단일 API 호출이없는 것 같습니다. 왜 최대화되었을 때 최대화 된 크기를 원하지만 최소화 될 때 "일반"크기를 원하겠습니까? 사용자는 창을 최대화 또는 정상 상태로 복원 할 가능성이 큽니다.

+0

[추가 읽기] (https://blogs.msdn.microsoft.com/oldnewthing/20040707-00/?p=38523) 특히 작업 영역 좌표에있는 창 배치에 대한 경고가 _ 화면 좌표가 아닙니다. – theB

+0

그리고 당신은 창/화면 좌표 시스템 경고로 날 때렸다. – theB

관련 문제