Hey leute,
studiere eigentlich technische informatik, deswegen habe ich kaum
erfahrungen mit oberflächenprogrammierung und mit C++ auch kaum. Muss
jetzt eine anwendung programmieren in C++, die halt gut aussieht(von der
oberfläche her) in WinXP.
Das programm soll unter anderem über die COM-Schnittstelle kommunizieren
können.
Habe mir bereits VisualStudioExpress2005 und 2008 runtergeladen.
Kann man damit die com-schnittstellen ansprechen? (habe gelesen , dass
bei express packete fehlen wie ATL).
oder reichen da die Express versionen nicht aus?
MFG M.Fisch
Selbstverständlich kann man auch mit den Expressversionen serielle
Schnittstellen ansprechen, denn auch mit den Expressversionen kann man
Win32-API-Funktionen aufrufen.
Welche das sind, wurde hier bereits ad nauseam diskutiert - angefangen
mit CreateFile, ReadFile, WriteFile etc. bis hin zu CloseHandle.
Selbstverständlich ist auch in den Express Versionen ab 2005 die
"SerialPort" Komponente enthalten.
Das direkte Ansprechen der Win32-API ist somit Pipifax und nicht nötig.
Die "SerialPort-Komponente" lässt sich sicherlich auch /völlig
problemlos/ mit C++ nutzen - nämlich gar nicht.
Der Threadstarter aber will weder "managed C++" noch "C#" verwenden,
sondern C++.
hm....
also ich würde einfach gerne VisualC++ express benutzen, da ich hier die
oberflächen leich zusammen klicken kann.
habe zum gerät, das ich ansprechen soll ein beispielcode, allerdings ist
im code
#include "atlstr.h"
#include "atltime.h"
drin.
VisualC++ 2008 Express sagt, dass es atlstr.h, atltime.h nicht gibt.
diese dateien gibt es auch nicht(habe die efstplatte durchsucht)!
habe versucht sie im Internet zu finden, das ergebnis war, dass diese
wohl zur WTL(windows template library) gehören, aber in der WTL
8.0/7.0-7.5 sind diese dateien auch nicht drin ?
kennst sich da einer aus? was macht WTL, ist das eine funktionen
sammlung, damit man leicher die windows-oberfläche ansprechen kann?
sorry habe echt keine ahnung, das googeln hat auch nicht viel gebracht.
und die forums von msdn sind fast ausgestorben, so kommt es mir
jedenfalls vor im gegensatz zur linux foren.
mfg
verstehe ich das richtig-->
Win32-API ist die Microsoft bibliothek um die schnittstellen
anzusprechen, ist aber schon alt und nicht objektorientiert
MFC (Microsoft Foundation Classes) --> eine grosse Microsoft bibliothek
, wobei hiermit man die schnittstellen objektorientiert ansprechen kann
WTL -> ist die gekürzte/kastrierte MFC
ATL -> weiter enwicklung von Win32-API ist in MFC drin und ein teil in
WTL ?
Also wenn mein beispielcode die funktionen aus MFC benutzt und MFC ist
aber nicht in Visual express versionen drin, dann habe ich pech und muss
neue programmieren oder PRO version kaufen ? Richtig?
danke für die zahlreiche antworten MFG
ATL war eine Lib für vereinfachte COM Programmierung und wurde
irgendwann mal mit der MFC verheiratet weil da vieles doppelt war und
untereinander nicht passte. Die MFC ist aber ziemlich 'fett' geworden
und da wurde im ATL Stil noch GUI Programmierung reingepackt und die WTL
draus.
Im Pro Paket sind die Files im ../VC/atlmfc Verzeichniss, ob das jetzt
in einem seperaten Download vom Plattform SDK oder WTL drin ist weiss
ich leider auch nicht, aber SDK würde ich mal probieren.
danke für die erklärung JojoS. leider kann ich so ein "workaround" nicht
nutzen, da das programm (wenn es entstehen sollte ;) ) auf einer
öffentlichen messe laufen soll.
> Win32-API ist die Microsoft bibliothek um die schnittstellen> anzusprechen, ist aber schon alt und nicht objektorientiert
Das ist keine Bibliothek, sondern die grundlegende Schnittstelle, mit
der jedes Programm, egal in welcher Programmiersprache geschrieben,
mit Windows kommuniziert.
ATL, MFC, .Net und was auch immer, all diese Bibliotheken kommunizieren
letztlich über die Win32-API mit Windows.
MFC ist eine ziemlich alte und nicht sonderlich beliebte
C++-Klassenbibliothek, die nicht im Lieferumfang von Visual C++
Express enthalten ist.
Du kannst mit den Express-Versionen nur Klassenbibliotheken nutzen, die
bei den Express-Versionen dabei sind, aber um mit der seriellen
Schnittstelle zu kommunizieren, braucht es nun wirklich keiner
C++-Klassenbibliothek.
Du kannst aber auch mit anständigen C++-Klassenbibliotheken arbeiten,
wxWidgets kann mit Visual C++ Express verwendet werden, ist frei
verfügbar und es gibt dafür eine anständige Komponente für den Gebrauch
serieller Schnittstellen. Das sogenannte "Terminalprogramm" von Tobi
(hterm) ist damit geschrieben.
Max, Du hast geschrieben, dass es in C++ programmiert sein muss. Falls
es managed C++ sein kann, dann wirst Du mit .NET, WinForms und der
SerialPort Komponente innerhalb kürzester Zeit was lauffähiges
hinbekommen und alles benötigte ist im Visual Studio Express Edition
bereits integriert.
Falls es native C++ sein muss, also unmanaged, dann wird es eine
kompliziertere Geschichte, wie bereits von den Anderen geschildert
wurde.