문제

저는 화면 크기가 조정될 때 필요에 따라 개별 항목을 늘리거나 줄이는 정말 좋은 대화 상자 크기 조정 클래스를 찾고 있습니다.Stephan Keil은 기본적으로 설정된 비율에 따라 모든 크기를 조정하는 좋은 도구(DlgResizeHelper)를 가지고 있지만 저는 더 똑똑한 것을 찾고 있습니다.

예를 들어:

  • 아이콘 크기가 조정되어서는 안 됩니다.

  • 한 줄 텍스트 상자는 수직으로 늘어나서는 안 됩니다.

  • 버튼은 아마도 같은 크기로 유지되어야 할 것입니다

기본적으로 모든 컨트롤을 살펴보고 정적 텍스트 필드가 옆/아래 컨트롤과 관련되어 있는지 파악하고 두 컨트롤을 함께 고정하고 큰 컨트롤의 크기를 '스마트' 방식으로 조정하여 보이도록 할 수 있는 방법을 찾고 있습니다. 좋은.

그런 프레임워크가 있나요?나는 하나를 작업해 왔지만 기성품이 아마도 더 나을 것입니다.

후속 조치:제안된 솔루션을 보고 있습니다.그 중 대부분은 대화 상자의 각 컨트롤을 앵커로 이동하도록 요구합니다.저는 추측이 틀렸을 경우 수동으로 고정할 수 있는 능력을 갖추고 앵커가 무엇이어야 하는지 알아낼 수 있는 스마트한 것을 찾고 있습니다.가능할 것 같습니다. 대부분의 사람들은 편집 필드 옆에 있는 정적 텍스트 필드가 함께 고정되어야 한다는 데 동의합니다.여기서는 거의 AI를 찾고 있는 것 같아요 :)

도움이 되었습니까?

해결책

wxwidgets를 사용할 수 있습니다. MFC를 완전히 대체하고 멀티 플랫폼이며 레이아웃 기반 대화 상자 메커니즘을 제공합니다.

다른 팁

나는 사용한다 RESIZABLELIB (속성 시트 및 페이지도 수행) CodeProject, IIRC에서. 대화 상자와 컨트롤이 대화 상자가 움직일 때 크기를 조정하거나 이동하는 방법을 결정하는 앵커 포인트를 설정합니다.

컨트롤 당 최대 2 개의 앵커 (왼쪽, 오른쪽)를 설정하여 대화 상자가 움직일 때 이동하거나 이동할 때 크기를 조정할 수 있습니다. 완벽하게 맞기가 어렵다면 이해하기 쉽습니다. :)

나는 많은 것을 시도하고 마침내 정착했습니다 http://www.codeproject.com/kb/dialog/layoutmgr.aspx. 그래도 제안하는 '지능형'레이아웃을하지 않습니다. 나는 어떤 라이브러리에서나 어떤 플랫폼에서나 그것을 본 적이 없다.

궁극적 인 도구 상자 MFC 라이브러리 (여기 CodeProject)에 포함됩니다 레이아웃 관리자. 나는 그것을 직접 사용하지 않았지만 그것이 당신이 원하는 것을하는 것처럼 보입니다.

당신은 볼 수 있습니다 전문 GUI 대화 상자 제어를 위해 클래스 라이브러리를 사용합니다. 나는 그것이 그들의 무료 버전의 일부라고 생각합니다.

Codguru의 Cresize 클래스를 사용하여 모든 컨트롤을 자동으로 크기를 조정합니다. 각 컨트롤이 크기를 조정하기를 원하는 방법을 알려주고 그것은 당신을 위해 일을합니다.

크기 조정 패러다임은 대화 상자가 크기가 크게 조정 될 때 컨트롤의 각 측면이 이동하는 양을 지정하는 것입니다.

SetResize(IDC_EDIT1, 0,   0,   0.5, 1);
SetResize(IDC_EDIT2, 0.5, 0,   1,   1);

대화 상자 컨트롤이 많을 때 매우 편리합니다.

소스 코드

이것은 CodeProject의 무료 솔루션입니다.
http://www.codeproject.com/KB/dialog/dlgresizearticle.aspx
이는 대화 상자 크기가 조정될 때 위치를 제어하는 ​​간단한 매크로 세트일 뿐입니다.

편집 - OP 댓글을 따릅니다.MFC용 QT/WX와 같은 일반적인 sizer 지원에 대해 알지 못하며 Winforms와 같은 새로운 프레임워크에도 없는 것 같습니다.
위젯의 크기가 다를 수 있는 멀티플랫폼에 필요하기 때문에 QT/WX에 있습니다. 이는 MS에 부족함을 설명합니다.그러나 이는 다중 언어 포트에도 필수적입니다.취소를 뜻하는 독일어의 길이는 30자입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top