2011-01-27 2 views
3


사용자는 MDI 컨테이너에 여러 최소화 된 창이있는 경우 각각을 다시 작성하지 않으면 구분할 수 없다고 불평합니다. 캡션 텍스트에 6자를 포함 할 수 있도록 최소화 된 창을 조금 더 넓게 만들 수 있는지 궁금합니다.
미리 감사드립니다.MDI C# Winforms에서 최소화 된 창의 크기를 변경할 수 있습니까?

+0

그렇게 생각하지 마십시오. – hungryMind

+0

해결 방법이 있습니까? 마우스가 최소화 된 폼을 가리키면 툴팁을 표시 할 수 있습니까? – StuffHappens

+0

"toolstrip"은 "툴팁"이라고 생각하십니까? 그리고 그렇습니다, 그것은 아주 우아하지는 않지만, 선택 사항입니다. 또는 열려있는 모든 창을 전체 이름으로 나열하고 전환 할 수있는 "창"메뉴를 사용하도록 가르 칠 수 있습니다. –

답변

6

아니요, 불가능합니다. Windows는 현재 시스템 매개 변수를 사용하여 최소화 된 창의 너비를 결정하므로 전체 시스템에서 값을 변경하지 않고 단일 응용 프로그램에 대해이를 동적으로 변경할 수는 없습니다.

특히 최소화 된 모든 창의 기본 크기는 160x31입니다. MDI 응용 프로그램에서는 윈도우가 Windows 작업 표시 줄이 아닌 MDI 호스트로 최소화되기 때문에 실제로이 크기를 보게됩니다. Raymond Chen (Microsoft의 Windows Shell 팀의 개발자)은이 특정 크기가 선택된 이유와 이것이 의미하는 바를 설명하는 몇 가지 블로그 항목을 게시했습니다. Why do minimized windows have an apparent size of 160x31? 그리고 두 번째 후속 항목은 여기 읽을 수 있습니다 : 첫 번째는 여기에서 확인할 수 있습니다 No, really, why is it 160x31?을 그가 그 두 번째 포스트에서 설명 하듯이 : 소형 제목 표시 줄의 폭은 MINIMIZEDMETRICS 구조의 iWidth 구성원에 의해 결정된다

. SystemParametersInfo 함수를 사용하여이 구조체를 검색하고 변경할 수 있습니다. 각각 SPI_GETMINIMIZEDMETRICSSPI_SETMINIMIZEDMETRICS 플래그를 사용하십시오. 일부 사람들은 MinWidth 레지스트리 값을 언급하지만 그 사람들은 잘못되었습니다. 예를 들어 MinWidth을 사용하면 로그 오프주기가 필요하고 SPI_SETMINIMIZEDMETRICS을 사용하면 즉시 적용됩니다. SPI_SETMINIMIZEDMETRICS은 내부 상태 변수를 업데이트하기 때문에, 레지스트리를 두드리는 것은 데이터베이스에있는 값을 변경하는 것입니다. 아무도 로그온하지 않으면 아무도주의를 기울이지 않습니다.

신장은 어떨까요? 캡션 표시 줄의 높이에 불과합니다. 캡션 표시 줄은 디스플레이 제어판의 모양 탭에서 조정할 수 있습니다. (프로그래밍, 당신은 NONCLIENTMETRICS 구조의 iCaptionHeight 멤버를 사용하여,이 시간이 도움이 SystemParametersInfo 기능을 사용할 수 있습니다.)


을 나는 사용자가 정말/P에 의해 기본 시스템 매개 변수 덤비는 호출하려는 의심 때문에 SystemParametersInfo function, 많은 옵션이 남아 있지 않습니다. 내 권고 사항, 특히 한 번에 하나의 창으로 작업하고 다른 창을 최소화 한 상태로두면 대체 인터페이스로 전환하는 것이 좋습니다. MDI의 목적은 사용자가 한 번에 두 개 이상의 창을 볼 수 있도록 여러 창을 배열하거나 계단식으로 배열 할 수있게하는 것이 었습니다. 전형적인 유스 케이스가 아닌 것처럼 들리므로, 대신에 탭을 사용하도록 애플리케이션을 전환하여 더 나은 서비스를 제공 할 수 있습니다. 이것은 종종 TDI (Tabbed Document Interface)으로 불려지며, 이전의 다중 문서 인터페이스 (MDI)를 다소 현대적으로 구현했습니다. 수년에 걸쳐 꽤 인기가있었습니다. Wikipedia article을 확인하십시오.

관련 문제