2008-09-26 2 views
2

내 응용 프로그램이 모든 창 테두리와 장식을 그립니다. 내 응용 프로그램 창이 최대화 될 때를 제외하고는 자동 숨김으로 설정된 Windows 작업 표시 줄에서 제대로 작동합니다. 작업 표시 줄은 "롤업"되지 않습니다. 화면 하단까지 크기가 조정 된 경우에도 응용 프로그램을 최대화하지 않으면 정상적으로 작동합니다. 심지어 창 크기를 조정하여 전체 디스플레이를 차지하는 경우 정상적으로 작동합니다 (마치 최대화 된 것처럼).응용 프로그램이 최대화 될 때 자동 숨기기 작업 표시 줄이 나타나지 않습니다.

답변

3

문제점을 발견했습니다. 내 응용 프로그램에서 WM_GETMINMAXINFO 메시지를 처리하고 매개 변수 MINMAXINFO 레코드의 값을 재정의했습니다. 레코드에 있던 값은 화면 픽셀 해상도 인 7 (테두리 너비)만큼 증가되었습니다. 최대화되면 화면 경계 부분을 넘어서게됩니다. 또한, ptMaxPosition (윈도우 원점이 최대화되었을 때 설정되는 점)을 -7, -7로 설정합니다. 내 응용 프로그램을 0,0으로 설정하고 최대 높이와 ​​너비를 정확하게 화면 해상도 크기 (부풀 리지 않음)로 설정했습니다. 이것이 왜 행해졌는지 잘 모르겠습니다. 그것은 전임자에 의해 쓰여졌다. 이 코드를 주석 처리하고 MINMAXINFO 구조체를 수정하지 않으면 Auto-hide가 작동합니다.

왜, 나는 완전히 확실하지 않습니다. "자동 숨김"작업 표시 줄을 표시하는 감지 기능은 WM_MOUSEMOVE 메시지를 처리하는 메커니즘에 연결되고 WM_NCMOUSEMOVE는 감지되지 않을 수 있습니다. 내 응용 프로그램에서 화면 아래쪽에 내 경계를 최대한으로 주차시키는 원인으로 인해 WM_NCMOUSEMOVE 이벤트가 발생했을 것입니다. MINMAXINFO가 남겨진 상태에서 WM_MOUSEMOVE를 생성했을 것입니다.

0

이것은 작업 표시 줄 속성에서 '다른 창의 맨 위에 작업 표시 줄 유지'가 선택되어 있는지 여부에 따라 다릅니다. 선택하면 작업 표시 줄이 나타납니다.

하지만 사용자의 요구에 맞게이 설정을 프로그래밍 방식으로 프로그래밍 방식으로 변경하려는 것은 무례하고 나쁜 습관으로 간주됩니다. 앱은 배포 된 환경에 적합해야합니다.