2010-12-15 6 views

Antwort

3

.NET kann sicherlich mit C++/CLI gearbeitet werden, und das sollte auch auf WPF erstrecken.

+2

Beachten Sie, dass C++/CLI mehr mit C# als mit C++ gemeinsam hat. +1. –

+0

Sicher, aber Sie könnten auch eine offensichtliche Sache bemerken, dass C# und C++ auch sehr viel gemeinsam haben - sowohl in der Syntax als auch in der Semantik. Na und? Solange es hilft, Dinge zu erledigen, ohne zu viele Probleme zu schaffen, ist es gut, denke ich. –

+0

Ich möchte hinzufügen, dass C# grundsätzlich C++ sehr ähnlich ist.Wenn Sie C++ kennen, ist C# ein Kinderspiel. Die Hauptänderungen betreffen nur die Art und Weise, wie Speicher und Objekte gehandhabt werden (mit einem Garbage Collector anstelle von new/delete und keine impliziten automatischen Variablen, die nur Dinge vereinfachen). Es gibt mehr syntaktischen Zucker, aber sonst ist es fast gleich. Als Ergebnis ist es viel einfacher zu handhaben als C++, mit weniger Sorgen machen. Also fürchte dich nicht! –

0

WPF wurde für eine verwaltete Umgebung erstellt. Wenn Sie also natives C++ mit WPF verwenden möchten, gibt es Hürden und Sie müssen nicht verwalteten und nicht verwalteten Code mischen. Aber eine .NET-Sprache ist die bevorzugte Methode, WPF zu verwenden.

See: WPF and Win32 Interoperability

+0

Nun, WPF und Win32 können zusammenarbeiten, aber nativer Code kann WPF nicht steuern. Das hier unterstützte Interop bettet einfach ein Win32-Fenster in das WPF-Segment ein und umgeht ein 'HWND', mit dem systemeigener Code spielen kann. Aber du bekommst Dinge wie XAML in C++ sicher nicht. –

0

WPF ist verfügbar zu C++ Entwickler, wenn sie C++ verwaltet verwenden.

+0

Es gibt keine Version von "Managed C++" (die zuletzt in Visual Studio 2005 existierte), die WPF unterstützt. C++/CLI unterstützt es, ist aber eher C# als C++. –

+1

@Billy: um fair zu sein, schrieb er "verwaltete C++" nicht "Managed C++" – Inverse

0

C++ kann nicht mit WPF interagieren, da WPF eine Technologie ist, die auf verwaltetem Code basiert. Das Hauptziel von WPF besteht aus dem Ereignissystem, den Reflektionsfunktionen und dem Objektrahmen der CLR.

  • In einer WPF-Anwendung erstellen Sie ein Objektdiagramm mithilfe einer XAML-Datei. Die Laufzeitumgebung verwendet Reflektion, um bestimmte Elemente im XAML an reale Objekte zu binden, die zur Laufzeit instanziiert werden. Dies ist in C++ nicht möglich, da C++ keine Reflektion unterstützt.
  • WPF benachrichtigt Code-Behind mit Ereignissen (ein Signale/Slots-System). Dies wäre in C++ nicht so einfach möglich, da C++ kein systemeigenes Ereignissystem besitzt. (Es gibt Dinge wie boost::signals verfügbar)
  • WPF-Klassen werden alle aus verwaltetem Code erstellt.
  • Sie können auf WPF von C++/CLI zugreifen, aber C++/CLI hat tatsächlich mehr gemeinsam mit C# als mit C++. Der Code funktioniert genau wie C#, aber er verwendet die C++ - Syntax (was für mich keinen Sinn ergibt ... mehr Leute beschweren sich über die C++ - Syntax als fast alles andere in der Sprache!).

    Wenn Sie WPF verwenden möchten, würde ich empfehlen, nur mit C# beizubehalten.

    +0

    C++ kann mit allem in Verbindung treten, solange es wie bekannt ist das zu tun. Es ist eine Low-Level-Sprache, die mit einer Vielzahl von Hardware- und Softwareplattformen kompatibel ist, einschließlich .NET CLI. –

    +0

    C# -Reflexion kann durch RTTI und einfache alte OOP (mit Einschränkungen, vielleicht) ersetzt werden. In C++ sind Ereignisse gut, weil es wiederum auf den Austausch von Nachrichten/Callbacks ankommt. So funktionierte Windows, seit es 1.0 war (es wurde schließlich in 'C mit Klassen' geschrieben). Sicher, es hat vielleicht nicht den speziellen syntaktischen Zucker von C# für Events, aber es wird gut funktionieren. Verwalteter Code ist wiederum kein Problem für C++. C++/CLI bietet alles Notwendige. –

    +0

    Auf der anderen Seite, wo C++/CLI möglicherweise eine spezielle API für den Zugriff auf einige der WPF-Funktionen benötigen, kann es immer noch fehlt. Aber es ist ein Problem der .NET/WPF-API, nicht C++. –

    Verwandte Themen