Mam istniejącą aplikację z rozbudowanym modelem C++, którą chciałbym podłączyć do ładnego, nowoczesnego interfejsu Windows 7 lub 8. Obecny (antyczny) interfejs użytkownika dla naszej aplikacji został opracowany we wczesnej epoce Windows XP/95/98 przy użyciu czystego API Win32. Nasz kod jest obecnie kompilowanie/linkowanie poprzez Visual Studio 2010.Jakie jest właściwe podejście do nowoczesnego interfejsu użytkownika dla aplikacji pulpitu Windows?
Wygląda na to, że istnieje wiele różnych "standardów" API programowania: Windows, Win32, MFC, ATL, COM i .NET. W ciągu ostatnich 14 lat moi inżynierowie niemal odholowali linię Microsoftu: w 2001 roku było to "MFC nie żyje - musimy przejść do ATL" (my nie). Wtedy ".NET wymieni MFC" (wydaje się, że nie ma).
Teraz jesteśmy gotowi, aby zrzucić nasz stary kod UI. Byłoby miło pracować z zestawem standardów, które są solidne i wydajne, ale także jednym, który możemy szybko utworzyć interfejs użytkownika. Odkładając na bok QT (na którym czytałem dużo dobrze argumentowanych plusów i minusów tutaj na stackoverflow):
1) Czy nowoczesne podejście do programowania interfejsu użytkownika dla Windows 7 & 8 będzie używać MFC lub .NET?
2) Dla podejścia .NET (zakładając, że istnieją solidne powody wyboru .NET) możemy użyć naszego kodu modelu C++ UNMANAGED z aplikacją .NET?
3) Czy tworzenie oprogramowania Visual Studio 2012 jest niezbędne, nawet jeśli nasza aplikacja początkowo nie byłaby zaprojektowana do prezentacji Metro?
4) Czy są jakieś inne zestawy narzędzi Microsoft, które należy wziąć pod uwagę przy tworzeniu aplikacji?
Stephen
.NET. Zazwyczaj łączyłbyś się z Windows Forms? A jeśli tak, podstawowym kodem jest C#, prawda? – SMGreenfield
@SMGreenfield Możesz użyć .NET z WinForms - choć, jak powiedziałem, dzisiaj użyłbym WPF. Zazwyczaj piszesz "logikę widoku" w języku C# (lub VB, ale jeśli jesteś programistą C++, C# będzie bardziej wygodne), następnie zintegruj ją z logiką C++ poniżej. Jest to podejście, z którego Visual Studio korzysta od VS2010, btw (jest to front-front WPF, z wieloma starszymi wersjami natywnego kodu) –