2009-04-15 2 views
5

최근에 MFC (Prosise book)를 배우기 시작했는데 어렵다고 느낍니다. 하지만 가장 어려운 부분은 사용자 인터페이스를 만드는 것입니다. 컨트롤이 배치되어야하는 위치를 알 필요가있는 것처럼 보입니다 (대화 상자 기반 앱이 아닌 경우).MFC를 사용하여 GUI 만들기

어떻게 해결할 수 있습니까? 먼저 Photoshop에서 응용 프로그램을 그린 다음 거리를 측정합니까?

또한 GUI 디자이너가 있습니까? (고통을 덜어주기 위해). 나는 속도와 사실 때문에 큰 프레임 워크가 필요하지 않기 때문에 많은 것을 좋아합니다.

정기적으로 MFC 프로그래밍을하는 사람이라면 누구나 프로그래밍 MFC를 잘 수행하는 방법에 대한 조언을받을 수 있습니다.

답변

0

많은 시간 동안 대화 상자 리소스 편집기와 데이터 바인딩을 사용하여 MFC에서 UI를 만들었습니다 (대화 상자 기반보기를 가질 수 있음). 대화 상자를 만들지 않으면 대개 컨트롤의 레이아웃을 염두에두고 알고리즘을 구현해야합니다.

2

MFC는 고통, IMO입니다. C++로 프로그래밍해야하는 경우가 아니면 C#과 WPF 또는 WinForms를 사용하는 것이 좋습니다. 훨씬 쉽습니다. 그리고 C++을 사용해야하는 경우 Qt와 같은 더 나은 GUI 솔루션이 있습니다.

+0

lib가 많고 GUI가 필요하므로 C++이 필요한 경우 wxWidgets 또는 QT를 사용하는 것이 좋습니다. MFC 경로로 이동하는 것이 좋습니다. – schoetbi

1

일반적인 MFC 앱에는 최상위 프레임 창과 일부 하위보기 창과 제어 막대가 있습니다. 이러한 것들 중 일반적으로 수동으로 배치 할 필요는 없지만 가끔 건설 중에 초기 크기를 지정해야합니다. Visual Studio의 대화 상자 편집기를 사용하여 대화 상자를 레이아웃 할 수 있습니다. 위치 코드를 수동으로 작성해야하는 경우는 매우 드뭅니다.

4

MFC 작업을 위해 Visual Studio에 포함 된 리소스 편집기가 아마도 MFC를 사용하는 가장 쉬운 방법 일 것입니다. 대화 상자에서 컨트롤을 배치하고 적절한 비율로 늘릴 수 있습니다. 레코드의 경우 MFC 이며 프레임 워크는 Windows의 일부로 번들로 제공됩니다.

컨트롤의 크기를 조정하려면 대화 상자의 크기를 조정할 때 전달되는 메시지의 크기를 조정할 수있는 코드를 추가해야합니다 (생각하면 ON_SIZE). 한 번에 너무 많은 것을 크기를 조정하거나 위치를 변경하고 싶지 않다면 너무 나쁘지 않습니다.

개인적으로는 WxWidgets에 대한 찬성으로 MFC를 피하는 것이 좋습니다. wxDesigner과 같은 멋진 GUI 레이아웃 프로그램이있어 크기 조정이 가능한 대화 상자와 속성 페이지를 쉽게 만들 수 있습니다.

1

어떤 버전의 Visual C++를 사용하고 있습니까? 내가 사용한 모든 버전은 GUI 구성 요소를 배치하고 편집하기위한 그래픽 도구와 함께 제공됩니다. 일반적으로 필요한 기본 구성 요소를 추가하여 코드를 작성하여 모양을 확인한 다음 다른 레이아웃을 시도하고 다른 구성 요소 부분을 추가하기 전에 다른 레이아웃을 시도하는 것으로 이동합니다.

몇 년 동안 MFC 앱을 쓰고 있었지만 꽤 좋아했지만 포스터와 동의해야만 왜 당신이 배움을 방해하고 있는지 물었습니다. 요즘에는 C# 또는 Java를 배우는 데 더 익숙 할 것입니다.

+0

+1 나에게서. 그게 내가 MFC 애플 리케이션을 함께 해킹하는 데 사용되는 방법이었다. 이제 wxPython을 사용하여 실행중인 프로그램을 실행하고 사용할 수있는 시간이 전혀 들지 않았습니다! –

4

MFC는 기본 동작 (기본 문서 /보기, 대화 상자, 멋진 사탕 UI 없음 ...)을 유지할 때 간단합니다. 기본 동작을 확장해야하는 즉시 더 어렵고 힘들어집니다.

1

MFC 응용 프로그램이 꽤 부 풀릴 수 있습니다 (예 :대형 응용 프로그램 실행 파일 크기, 메모리 사용 공간 및/또는 응용 프로그램과 함께 런타임 DLL이 필요함). C++에 중점을두고 있다면 WTL (Microsoft 라이브러리가되었지만 지금은 SourceForge)을 사용하는 것이 좋습니다. 그것은 매우 가벼운 대체 (템플릿을 사용하여)와 비슷한 구문으로 MFC입니다.

최근에는 GUI를 비롯한 대부분의 응용 프로그램에서 Java 용 C++을 포기했지만 돌아갈 계획은 없습니다.

+6

MFC가 부풀어 오르고 Java가 아닙니다 :))? –

+3

Java GUI의 모양과 느낌을 견딜 수 없습니다. 그들은 끔찍합니다. 네이티브 UI보다 자바 UI를 선호하는 사람을 알지 못합니다. – Tim

+1

@Tim Java는 많은 모양과 느낌을 지원합니다 (예 : 윈도우 네이티브 등). 그래서 Java가 가장 훌륭하고 작업하기가 매우 쉽습니다. 그리고 크기 조정 문제를 처리하는 매우 강력한 레이아웃이 있습니다. –

1

MFC 응용 프로그램에서 대화 상자의 레이아웃 기능을 사용하려면 CormView에서 CView 클래스를 파생시킵니다. 이것은 .NET WinForms, VB6 등의 "폼"기반 GUI와 비슷하게 보입니다.

생성 된 클래스의 기본 클래스 드롭 다운 섹션 아래에서 새 응용 프로그램 마법사를 통해이 작업을 수행 할 수 있습니다 VS 2008).

이미 친숙한 대화 상자 기반 응용 프로그램을 만들 수도 있습니다.

응용 프로그램의 "보기"를 디자인하는 다른 방법을 제공하는 몇 가지 다른 CView 파생 클래스가 있습니다. 기본 CView를 기본 클래스로 사용하면 마법사가 수동으로 "컨트롤"을 만들고/또는 그림을 그리면 화면이이됩니다. 구식 (실제로 GDI로 화면을 그리는)은 오래된 학교의 Win32 개발자들에게 익숙하지만 더 많은 현대 프레임 워크에서는 결코 끝나지 않습니다.

2

나는 10 년 이상 MFC를 사용 해왔다. 나쁘지 않은데 다른 플랫폼에서 응용 프로그램을 실행하는 데 관심이 없다면 다른 비 Microsoft 프레임 워크를 사용하는 것이 좋습니다. 응용 프로그램을 대화 상자처럼 보이게하려면 Aardvark와 같은 CFormView를 사용하여 대화 상자 편집기를 사용하여 제안하십시오. 많은 MFC 프로그램에서 뷰는 CListViews이거나 왼쪽의 트리와 오른쪽의 ListView가있는 응용 프로그램과 같은 탐색기입니다. 우리가 많이 사용하는 또 다른 하나는 탭 컨트롤과 속성 페이지가있는 일반 CView입니다. 그 중 레이아웃 문제는 없습니다. 컨트롤을 만들고 가장자리에서 미리 정의 된 거리에 컨트롤을 배치하기 만하면됩니다. Prosise는 매우 좋습니다. 그것이 MFC에서 나에게 달려 있습니다. CodeProject.com에서 MFC를 확장하는 클래스 (예 : 대화 상자 및 속성 시트 크기 조정)를 확인하십시오. 브라이언

+0

6 년 후조차도 MFC가 여전히 QT보다 우수하다고 말하면 Windows 응용 프로그램을 원하거나 각 플랫폼마다 기본 GUI를 설계 할 수있는 인력이 필요한 경우 – Lothar

-1

GUI 용도로 QT로 이동하십시오. 나는 당신이 그것을 좋아할 것이라고 확신합니다 ..........

+0

이점에 대해 알려주십시오. –

0

다른 프레임 워크를 추가하지 않고도 MFC를 사용하면 훌륭한 결과를 얻을 수 있습니다. 작성한 유틸리티의 example입니다.

관련 문제