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
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.
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.
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.
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.
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.
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.
@Op
schau dir doch mal Qt an, dann isses auch gleich Platformunabhängig.
Wenn der Gui-Anteil nicht so groß ist, reicht vielleicht aber auch ein
weniger mächtiges Framework.
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.
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.
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.
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.
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.