C++ mit Windows Forms?

Gast #4999379
Lesenswert?

Hallo,

ich möchte ein Windows Programm für Abgleichzwecke schreiben. Ich habe 
mir Visual Studio Community 2017 installiert und mit eine C++ Projekt 
bekonnen. Leider finde ich hier keine Vorlagen um ein Windows Form für 
ein GUI hinzuzufügen. Diese Möglichkeit scheint mir nur C# zu bieten, 
dann habe ich allerdings Probleme meine DLL einzubinden. Ist es richtig, 
dass ich mit C++ nur Konsolenanwendungen schreiben kann?

Vielen Dank und noch einen schönen Tag

Bernd
Gast #4999484
Lesenswert?

Was immer noch gut funktioniert:

"C++ WindowsFormsAnwendung" in VisualStudio2008 erstellen. Dann in
VisualStudio2013(?2017)importieren. Dann funktioniert auch der
AnwendungsDesigner für C++ Projekte in neueren Versionen vom
VisualStudio.
#4999537
Lesenswert?

nimm VisualStudio2013, ich  hab  in VisualStudio2017 es ebenfalls nicht
geschafft den Button  für WindowsForms zu finden.

Ich glaube  C#  ist  C++  bei Microsoft, und die meinten
Beispiele die man findet  sind  C#.

Ich würde  C# nehmen.  Und ich wette ein Wochengehalt daß  man
C libraries auch in  C# einbinden kann.
Gast #4999539
Lesenswert?

Frank F. schrieb:
> Ich würde  C# nehmen.  Und ich wette ein Wochengehalt daß  man
> C libraries auch in  C# einbinden kann.

klar kann man das, aber es gibt sehr wenig Gründe warum man das machen 
sollte.

Unter C# kann man die GUI auch mit WPF machen.
Ein GUI lastige Anwendung würde ich auch nicht mehr mit c(++) machen.
Persönliche Seite #4999571
Lesenswert?

Frank F. schrieb:
> Ich glaube  C#  ist  C++  bei Microsoft

Nein. C# ist C#, und C++ ist entweder richtiges C++ (dann gibt es keine 
.Net-Unterstützung) oder eine MS-Perversion namens "Managed C++" bzw. 
"C++/CLI", die so ähnlich aussieht wie C++, aber um Spezialitäten 
verschlimmbessert wurde, um mit dem .Net-Geraffel zu koopierieren.

Windows Forms sind eine .Net-Technik, lassen sich also nur mit einer 
.Net-Sprache nutzen.
Persönliche Seite #4999573
Lesenswert?

Frank F. schrieb:
> Und ich wette ein Wochengehalt daß  man C libraries auch in  C#
> einbinden kann.

Diese Wette ... wird aufwendig. Nativen C-Code kannst Du in C# nur über 
den umständlichen Umweg einer DLL nutzen, und dann hast Du noch den 
ganzen "Marshaling"-Kram an der Backe.

Aber hier geht es gar nicht um C-Libraries, denn "Windows Forms" hat 
nichts mit nativem Code zu tun, sondern ist .Net-Geraffel.
Gast #4999577
Lesenswert?

Rufus Τ. F. schrieb:
> .Net-Unterstützung) oder eine MS-Perversion namens "Managed C++" bzw.
> "C++/CLI", die so ähnlich aussieht wie C++, aber um Spezialitäten

Nun ja, eigentlich war das mehr eine Handreichung um vorhandem C++ Code 
zu WinForms zu verhelfen. Microsoft selber hat immer gesagt, dass es 
nicht dafür gedacht ist, neue Projekte damit aufzuziehen.

Egal, wie auch immer seit VS2012 gibts keine Unterstützung mehr für 
C++/CLI.


Zum Thema. Wer C++ kann wird sich auch recht schnell in C# reinfinden. 
Die Unterschiede sind zwar für einen Kenner beider Welten riesig, aber 
im Grunde ist die Kluft nicht so tief.
Gast #4999949
Lesenswert?

nicht"Gast" schrieb:
> Egal, wie auch immer seit VS2012 gibts keine Unterstützung mehr für
> C++/CLI.

Natürlich wird C++/CLI auch in der neuesten Version von VS unterstützt 
("Templates unter Visual C++ - CLR"). Wäre ja sonst auch ziemlich blöd 
für Leute, die damit Wrapper für nativen Code schreiben wollen.
Genau dafür ist es nämlich gut geeignet und bei etwas umfangreicheren 
Bibliotheken deutlich einfacher und "weniger komisch" als P/Invoke, da 
man einerseits richtiges C++ (und damit z.B. C++-Bibliotheken), 
andererseits in der Schnittstelle zu .NET die entsprechenden 
Erweiterungen verwenden kann.
Gast #4999959
Lesenswert?

Hier ist ein leeres VisualStudio2013  C++ WindowsForms Projekt.
VisualStudio unterstützt immer noch C++. Es lassen sich nur keine
neuen Projekte erzeugen. Bei existierenden Projekten funktioniert
alles wie gehabt.
Ob das Projekt hier unter VS2017 geht, müsste mal jemand probieren,
der VS2017 in Verwendung hat.
Angehängte Dateien:
Gast #5000041
Lesenswert?

Holger74 schrieb:
> Hier ist ein leeres VisualStudio2013  C++ WindowsForms Projekt.
> Ob das Projekt hier unter VS2017 geht, müsste mal jemand probieren,
> der VS2017 in Verwendung hat.

Funktioniert, aber mit Warnungen:

Command line warning D9035: option 'clr:pure' has been deprecated and 
will be removed in a future release

'System::Security::Permissions::SecurityAction::RequestMinimum': marked 
as obsolete

> Es lassen sich nur keine neuen Projekte erzeugen.

Richtig, keine WinForms-Projekte für C++/CLI, aber davon rät MS ohnehin 
schon seit vielen Jahren ab. Ich würde von C++/CLI - außer für Wrapper 
und evtl. spezielle Konsolen-Tools, die sowohl mit .NET als auch mit 
nativem Code klarkommen müssen - die Finger lassen ... Und genau für 
diese beiden Einsatzzwecke gibt es ja auch in VS 2017 noch 
Projektvorlagen.

@Bernd

Da hast also folgende Möglichkeiten (VB sowie App-Zeugs ignoriere ich 
mal):

1. C# und WinForms oder WPF verwenden und P/Invoke für deine DLL 
benutzen.
http://openbook.rheinwerk-verlag.de/visual_csharp/visual_csharp_20_002.htm#mj391e583525457812f4c9b85ab37a758e

2. C# und WinForms oder WPF verwenden und einen C++/CLI-Wrapper für 
deine DLL schreiben.
https://code.msdn.microsoft.com/windowsdesktop/CppCLINativeDllWrapper-29c32acd

3. C++ verwenden und die Windows-C-API (Ressourceneditor als 
Hilsmittel).
http://zetcode.com/gui/winapi/

4. C++ verwenden und eine GUI-Bibliothek deiner Wahl (Qt, MFC, WTL, 
wxWidgets, Win32++ oder was auch immer).

5. C++/CLI und WinForms.
Persönliche Seite #5000183
Lesenswert?

Flip schrieb:
> 3. C++ verwenden und die Windows-C-API (Ressourceneditor als
> Hilsmittel).

Für Masochisten gibt es dann auch noch:

C verwenden zusammen mit der Windows-API.

Als Buch empfiehlt sich da der Petzold*.

Klingt bizarr, hilft einem aber zu verstehen, wie das ganze 
Windows-System mit Fenstern, Nachrichten etc. tatsächlich 
funktioniert.

Die diversen GUI-Libraries verbergen diesen Unterbau mehr oder weniger 
gründlich.



*) Charles Petzold, "Programming Windows"

Antiquarisch. Die ersten drei Ausgaben davon beschäftigten sich mit der 
16-Bit-API von Windows 3.x, die will man sich dann doch vielleicht nicht 
mehr antun, man will die vierte (1996) oder fünfte (1998) haben.
Auch wenn das Buch zwei Jahrzehnte auf dem Buckel hat, die Grundkonzepte 
haben sich nicht verändert.

Borland hat die dritte Ausgabe mal mit einem ihrer Compiler zusammen 
ausgeliefert, das war Borland C++ 3.0, wenn ich mich recht erinnere.
#5004606
Lesenswert?

Mal kurz zurück zu der eingentliche Frage:

> ich möchte ein Windows Programm für Abgleichzwecke schreiben.

Was willst du da Abgleichen? Wenn z.B. 2 Dateien oder Verzeichnisse 
inhaltlich verglichen werden sollen, brauchst du nix selbst schreiben: 
kdiff3, Beyond Compare, usw tun genau das.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren