문제

현재 Windows 용 GUI를 처음 디자인하고 있습니다. MFC와 Visual Studio 2008을 사용하고 있습니다. 프로그램을 설계 한 모니터에는 1680x1050 기본 해상도가 있습니다. 동료 중 한 명에게 프로그램을 컴파일하여 컴퓨터에서 실행하여 (일반적으로 1024x768로 실행되는 노트북)를 화면에 맞지 않습니다.

MFC 애플리케이션을 설계하여 모든 결의안에서 실행되도록하는 방법에 대해 읽으려고 노력했지만 오해의 소지가있는 정보를 계속 찾고 있습니다. 내가 보는 곳마다 DLUS가 귀하를 위해 귀하의 응용 프로그램 크기를 조정해야하며, 문제를 해결해야 할 유일한 시간은 해상도에 대해 걱정 해야하는 실제 비트 맵이있을 때입니다. 그러나 이것이 사실이라면, 모니터를 해상도로 설정할 때 왜 내 프로그램이 화면에 더 이상 맞지 않습니까? 내 프로그램이 1680x1050에서 사용하는 것과 같은 양의 화면 부동산을 차지하기 위해 "수축"대신 거대하고 거칠게됩니다.

여기서 "명백한"솔루션은 해상도를 1024x768로 설정하고 화면에 맞게 프로그램을 재 설계하는 것입니다. 제외하고 이미 내 대화의 모든 것을 1024x768에서 실행하는 화면에 내 프로그램을 시도하고 얻을 수 있도록 최대한 많이 낭비했습니다. 내 대화 상자 글꼴은 Microsoft Sans Serif 8으로 설정되었지만 1024x768에서 실행할 때 여전히 크게 (8 포인트보다 크게) 나타납니다.

내 프로그램을 동일한 스케일링을 유지할 수있는 방법이 있어야한다는 것을 알고 있습니다. 아니면 이것이 문제에 접근하는 잘못된 방법입니까? MFC 프로그램을 설계하여 800x600 이상의 많은 해상도에서 실행할 수 있도록 올바른/표준 방법은 무엇입니까?

도움이 되었습니까?

해결책

응용 프로그램 GUI가 대화 기반이라고 가정합니다 (기본 창은 대화 상자입니다)?

이 경우 문제가 발생합니다. MFC는 대화 상자를 올바르게 만드는 데 도움이되지 않기 때문에 문제가 있습니다. 귀하의 옵션은 다음과 같습니다.

  • SDI 또는 MDI GUI를 사용하도록 GUI를 재 설계하십시오.
  • 대화 상자 크기 조정 확장자를 사용하십시오. 아주 좋은 제안을 위해 이용 가능한 많은 것이 있습니다. 이 질문. 또 다른 옵션입니다 이 하나 그리고 이 하나.
  • MFC를 사용하지 마십시오. WXWIDGET은 대화 상자 조정을 훨씬 더 잘 지원합니다.

다른 팁

MFC는 Windows API의 얇은 래퍼 일뿐입니다. 둘 다 거의 사실이 아닌 가정을합니다. 해상도 화면이 더 높으면 더 큰 문자를 얻기 위해 Windows에서 DPI 또는 글꼴 크기를 조정합니다. 대부분의 경우 화면 크기가 클수록 더 큰 물리적 모니터 또는 가능한 한 작은 화면에 많은 정보를 짜내고 자하는 노트북을 의미합니다. 사람들은 더 자세한 정보를 더 중요하게 생각합니다. 따라서 가정이 실패합니다.

전체 UI를 지원 해야하는 가장 작은 크기 화면으로 짜낼 수 없다면 더 작게 만들기 위해 다른 방법을 찾아야합니다. UI에 대해 아무것도 알지 못하면 탭을 사용하여 컨트롤을 페이지로 그룹화하는 것이 좋습니다.

더 큰 화면을 가진 사람들이 한 번에 더 많은 정보를 볼 수 있도록 Windows를 재개 할 수있는 행운을 빕니다. WM_Size 메시지에 창에 응답하고 어떤 컨트롤을 더 크게 만들어야하고 어떤 컨트롤이 이동 해야하는지 결정하면서 어려운 방법 으로이 작업을 수행해야합니다.

해상도가 변경 될 때 대화 상자의 내용을 조정하는 자동적 인 방법은 없습니다. 따라서 경계를 설정해야합니다.

옵션 1.고객을 위해 앱을 개발하는 경우 최소 해상도 (1024x7678과 같이)를 선택하고 모든 것이 적합하도록 대화 상자를 재 설계하십시오. 어쩌면 일부를 여러 곳으로 나누거나 탭 스트립 컨트롤을 사용하십시오.

옵션 2.지원하려는 각 해상도에 대해 별도의 대화 상자 양식을 작성하지만 동일한 클래스를 사용하여 처리하십시오. 런타임에서 해상도를 감지하고 적절한 양식을 사용하십시오.

옵션 3.사용자가 자신이 원하는대로 대화의 크기를 조정할 수 있도록 자신의 크기 조정 기능을 작성하십시오.

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