Forum: PC-Programmierung C++ mit Windows Forms?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bernd (Gast)


Bewertung
0 lesenswert
nicht 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

von dumdidum (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nein. Du kannst auch in C++ eine GUI direkt programmieren. Leider geht 
der visuelle Designer nur mit c#.

von Oliver S. (oliverso)


Bewertung
-1 lesenswert
nicht lesenswert
Wenn es so ist, das du mit Visual C++ nur Consolenanwendungen schreiben, 
und mit C# keine DLLs einbinden kannst, dann ist das halt so.

https://docs.microsoft.com/de-de/cpp/windows/desktop-applications-visual-cpp
https://developercommunity.visualstudio.com/content/problem/10857/cant-find-the-template-for-mfc-programming-in-file.html

Oliver

: Bearbeitet durch User
von Sebastian E. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Was du suchst ist wahrscheinlich C++/CLI. Damit kannst du wahlweise 
reine .NET oder Mixed-Mode (.NET und nativer code) Assemblies erstellen.

von Holger74 (Gast)


Bewertung
0 lesenswert
nicht 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.

von Frank F. (frank_f49)


Bewertung
0 lesenswert
nicht 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.

von Peter II (Gast)


Bewertung
0 lesenswert
nicht 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.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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.

von nicht"Gast" (Gast)


Bewertung
0 lesenswert
nicht 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.

von Vlad T. (vlad_tepesch)


Bewertung
0 lesenswert
nicht lesenswert
@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.

von Peter II (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vlad T. schrieb:
> schau dir doch mal Qt an, dann isses auch gleich Platformunabhängig.

genau wie .net

von Flip (Gast)


Bewertung
0 lesenswert
nicht 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.

von Holger74 (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

von Flip (Gast)


Bewertung
0 lesenswert
nicht 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.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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.

von Eric B. (beric)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.