2010-06-25 2 views
12

저는 현대 Windows 소프트웨어가 요즘 C++로 작성된 방법에 관심이 많습니다. Windows 소프트웨어에서 일한 친구에게 물었고 마지막으로 MFC와 WTL을 함께 사용한다고했습니다. 그는 MFC가 더 이상 근대적 인 것이 아니라 WTL이 여전히 사용되지만 더 많이 알지 못한다고 말했다. 그는 또한 WTL이 현대적이 아니며 순수 Windows API로 프로그래밍했다고 전했다.C++에서 최신 Windows 소프트웨어를 작성하는 방법은 무엇입니까?

Windows Vista 또는 Windows 7 용 소프트웨어는 어떻게 작성합니까? 아직도 WTL을 사용하고 있습니까? MFC와 순수한 Windows API는 어떻습니까? 아니면 다른 도서관이 있습니까?

나는 그것에 대해 많이 알지 못하지만, C# 또는 다른 .NET 언어를 현대 Windows 소프트웨어를 작성하는 데 C++로 대체 시켰습니까?

답변

13

:

  • WTL은 생명선입니다. 팬들에 의해 픽업 된 마이크로 소프트에 의해 포기되고 몇몇 아주 바쁜 추종자가 있었다. 매우 깨끗하지만 학습 곡선이 가파르고 팬 층이 줄어들고 있습니다. 야후 그룹은별로 활발하지 못하다. 나는 그것을 추천 할 수 없다.

  • MFC는 MSFT에서 기능 팩을 출시 할 때 평생 임대 계약을했습니다. 다소 광범위하고 약간의 un-MFC-ish는 스키닝, 도킹 레이아웃 및 리본에 대한 강력한 지원을 제공합니다. 나는 그것이 거칠게 대중적이 될 것이라고 생각했지만, 그것에 뛰어 다니는 많은 개발자들을 결코 보지 못했습니다. MSDN 포럼 질문이 희박합니다. 기존의 MFC 코드베이스를 가지고 있다면 확실히 살펴보십시오. Win7 기능이 추가 된 VS2010을위한 또 다른 MFC 새로 고침은 회사의 기본 UI 솔루션을 유지합니다.

  • wxWidgets가 아직 주위에 있습니다. 개인적인 경험은 없지만, 주님, 제가 들었던 몇 안되는 사람들은 폭풍이 몰아 치고 있습니다. 진짜 쓰라린 물건.

  • Qt는 꽤 오래 동안 사용되었지만 특히 지난 해에는 상당히 많은 스트림을 가져 왔습니다. 누구 그것을 사용 정말 좋아해. UI 클래스 라이브러리의 영역을 넘어서고 있으며, 사용자들은 문자 Q로 시작하는 일반적인 프로그래밍 작업에 대한 솔루션을 적극적으로 찾고 있습니다.

Microsoft 스택에있는 경우 실제 UI 개발이있는 클래스 라이브러리는 없습니다. WPF는 방안에있는 코끼리입니다. 그 기능은 위에 열거 된 것보다 수백 마일 더 있습니다. 장치 및 패러다임 경계를 깨는 능력은 강력하며, 데스크톱뿐만 아니라 웹 브라우저에서도 실행되는 코드를 작성할 수있을뿐 아니라 전화를 이기기가 어렵습니다. 그러나 C++은 그러한 부분이 아닙니다.

+1

WPF를 살펴 보겠습니다. 감사! – bodacydo

+1

QT를 사용하고 혐오합니다. 분명히 나는 ​​소수에있다. 그것은 내가 본 것 중 가장 비효율적 인 GUI 프레임 워크입니다. 특히 CSS 스타일 시트를 사용하여 스키닝을 할 때 특히 그렇습니다.i7에서 12 개의 CSS 스킨 버튼 위젯을 만드는 데는 1000 밀리 초가 걸립니다. OS X에 대한 지원도 꽤 엉망입니다. MOC는 컴파일 시간을 현저하게 늘리고 메모리 관리 모델이 끔찍합니다. 그럼에도 불구하고, GUI, 스레딩, 네트워킹 등을 모두 제공 할 때 크로스 플랫폼 프레임 워크에 관해서 우리가 가진 최선의 방법 중 하나입니다. – stinky472

+2

나는 항상 Qt를 사용하며, 현대적인 C++ 개발이있는 곳입니다. –

9

Qt을 (를)보고 싶으 실 수 있습니다. 물론 당신이 아닌 휴대용 버전을 선호합니다. 그러나 OS X, Linux, 휴대폰 등을 기반으로 구축 할 계획이 없더라도 Qt 프레임 워크는 잘 작성되고 문서화되어 작동합니다. 이제 SDK에 멋진 IDE (Qt Creator)가 포함됩니다.

+0

+1 for Qt Creator - 가장 좋은 IDE입니다. –

11

WTL,Qt,wxWidgets이 꽤 일반적으로 사용됩니다.

  • 그들은 모두 빠른 GUI 개발을 허용하고 은 (세 번째 옵션은, 내 마음에 익숙해 시간이 더 걸립니다) 꽤 다양한입니다. 둘째 및 셋째 옵션은 플랫폼이 이기 때문에 정말 멋지다.

  • 순수 WinAPI에 창을 쓰는 것은 상당히 오래된 학교이지만 때로는 재미있을 수도 있습니다.

  • C# 건물 창에 대한 접근 방식은 이전 옵션과 비교하여 신속한이지만 더 유연하지는 않습니다. 나는 지난 몇 년 동안 무엇을 본 적이에서

2

.NET (C#, VB.NET, ...)에서 GUI 프로그래밍의 최첨단은 현재 WPF (WinForms 대체)입니다. .NET에서 컴파일 된 코드는 실제로 CIL이며 런타임시 JIT에서 원시 코드로 컴파일됩니다. 이것은 64 또는 32 비트 대상 시스템을 신경 쓸 필요가 없다는 장점이 있습니다.

C++에서 Qt는 깨끗하게 설계되어 많은 서비스를 제공하므로 좋은 해결책 인 것 같습니다. Qt에서 싫어하는 점은 컴파일 왕복입니다. 너무 느리고, moc 컴파일러, 컴파일러, 링크가 있습니다. C# /. NET에 비해 실행 파일을 얻는 데 시간이 오래 걸립니다. 다른면에서 임베디드 시스템에서도 이러한 문제가 발생할 수 있습니다.

결정하기 전에 최소한 C#/.NET을 사용하고 실험 해 보라고 권합니다.

7

WTL 주 플랫폼이 Windows 인 경우 항상. Chrome에서 Spotify를 사용합니다. 가장 생산적이고 유연하며 리소스 호그가 아닙니다. 융통성있게 말하자면 순수 Win32 API 코드/다른 C++ 코드와 함께 사용하면 어려움없이 사용할 수 있습니다. 더 WTL 정보

: collection of WTL links

2

평가 한 후 나는 순수는 Win32 또는 WTL 기반 WRT하지 않는 현대적인 스타일의 승리 애플리케이션을 쓸 수있는 유일한 방법입니다 상황에왔다.

새로운 모양이 주요 포인트입니다. MFC는 특히 Win8 및 Win10에서이 모든 기능 팩을 사용하여 눈에 띄지 않게 보입니다. 순수한 MFC는 좋지만 뚱뚱하고 뷰 모델 부분은 끔찍한 일이며 WTL을 더 좋아합니다. 하지만 서류 미비이고 이것은 매우 나쁘고 무섭습니다.

WxWidgets는 추악한 장난감입니다.

QT는 더 이상 대안이 아닙니다. 그들은 모바일과 appframework에 너무 많은 초점을 맞 춥니 다. 그리고 MacOSX를 사용한다면 QT를 전혀 사용할 수 없습니다 (예, 실행되지만 UX에 대해 구토하게 만듭니다).

WinRT는 사용이 제한적이고 기능이 부족합니다. 그리고 아무도 WinStore 나 Windows를 정제/폰에서 사용하지 않기 때문에 실패 할 수 있습니다. 왜 그렇게 괴롭습니까?

사용자가 느리고 뚱뚱한 응용 프로그램을 사용한다고 생각하면 WPF는 괜찮습니다. 더 멋지게 보이지만 모든 눈동자는 이제 UI 디자인 지침의 일부가 아니며 위젯의 기능 세트는 Win32 기본 위젯보다 적습니다. 믿을 수 없지만 사실. 그리고 나는 성능이 에너지이기 때문에 인생의 시간이기 때문에 성능 문제가 다시 발생하므로 제 의견으로는 사용하지 않는 C#을 사용하여 여러분을 감추고 있습니다.

심지어 Herb Sutter 및 기타 상위 MS 직원이 C++가 미래라고 말합니다. 그리고 다음 킬러 애플 리케이션은 C++ 14를 기반으로하며 Microsoft는 그것을 알고 있습니다.

+0

WTL/Windows API는 어렵지만 데스크톱의 다른 대안보다 덜 복잡 할 수 있습니다. WTL이 문서화되었고 주변에 좋은 커뮤니티가 있으므로 WTL은 계속 업데이트됩니다. WTL에 익숙해지기를 원한다면 Windows API를 배워야하지만 어느 정도는 받아 들여야합니다. 그러나 WTL은 많은 노력을합니다. –

관련 문제