Zum Inhalt springen

Umstellung von MS VC++ 6.0 auf MS VC++ .NET


Narf!

Empfohlene Beiträge

Da sich die Probleme häufen, ein VC++ 6.0 Projekt in ein VC++ .NET Projekt zu konvertieren, habe ich mal dieses Thema erstellt.

Er bringt mir folgende Fehlermeldung:

d:\Microsoft Visual Studio\VC98\MFC\SRC\STREX.CPP(28) : error C2039: 'CString': Ist kein Element von 'ATL::CStringT<BaseType,StringTraits>'

Er greift also noch auf den alten Ordner von VC++ 6.0 zu, da ich das .NET auf LW G: installiert habe.

Ich habe alles abgesucht, um diesen Pfad zu ändern, habe aber nichts gefunden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Goos

Wirklich?...auch bei "groesseren" Projekten?

Ich habe erst letzte Woche testweise ein Projekt mit > 500.000 Zeilen konvertiert.

...und wo ist da der Sinn dabei? (mal abgesehen von privatem Gebrauch)
Da gibt's einiges:

  • Die IDE hat sich verbessert
  • Der Compiler hat sich stark verbessert
  • Eine ganze Reihe Macken aus MFC und ATL sind weg

bzw. wer kann sich das leisten, ein fertiges Projekt noch zu konvertieren?
Wer hat was von fertig gesagt? ;)
Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Klotzkopp

Ich habe erst letzte Woche testweise ein Projekt mit > 500.000 Zeilen konvertiert.

Oki dann funktionierts wohl recht gut vermut ich mal ;)

Original geschrieben von Klotzkopp

Da gibt's einiges:

  • Die IDE hat sich verbessert
  • Der Compiler hat sich stark verbessert
  • Eine ganze Reihe Macken aus MFC und ATL sind weg

Da kann ich nun nichts zu sagen, denn bei uns wird kein VC++.NET eingesetzt und ich hab auch nicht die Untersuchungen dazu durchgefuehrt. Scheinbar taugts zumindest nicht fuer alle Belange mehr als das alte.

Original geschrieben von Klotzkopp

Wer hat was von fertig gesagt? ;)

Keiner direkt, aber ich bin halt mal davon ausgegangen. Hat sich fuer mich irgendwie so angehoert :D

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein ganz dringendes Problem:

Ich habe ein Win32-Programm unter XP mit MS VC++ .NET entwickelt und dazu ein Setup-Programm.

Ich habe das Programm unter Win 98 installiert. Die Installation lief einwandtfrei, aber es läuft nicht.

Folgende Fehlermeldung:

Debug Assertion Failed!

File: occmgr.cpp

Line: 410

Ich brauche dringend eine Antwort, weil ich das Projekt heute zum Testen rausgeben möchte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Diese Zeile steht nirgends drin. Habe in der gesamten Projektmappe gesucht.

Man hat mir auch empfohlen, auf dem Win98-Rechner das .NET-Framework zu installieren, das hat auch nicht geholfen.

Wofür braucht man das Framework überhaupt?

@Klotzkopp:

Ich habe die Zeile #define WINVER 0x0400 in meiner Haupt-Header-Datei für das Projekt stehen. Soll ich den Wert auf 0x0410 ändern?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Nun stehe ich endgültig auf dem Schlauch.

Ich bin mal die Projekt-Eigenschaften durchgegangen und habe bei

Projekteigenschaften - Linker - Optimierung - Für Windows 98 optimieren

den Wert von Standard auf Ja(/opt: WIN98) geändert. Es hat nichts gebracht.

Ich wäre für schnelle Hilfe dankbar.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Mit VS 6 war es so einfach...

Ich hatte in der alten Version den Windows Media Player als Steuerelement eingebunden und alles ging von selbst. Ich konnte eine Variable hinzufügen und die Klasse war auch schon drin.

Jetzt ist es etwas schwieriger:

Ich füge den WMP als Toolbox-Element ein, danach in meinen Dialog. Jetzt wollte ich wie vorher eine Variable zuweisen, mit Rechtsklick auf das Element und... Variable hinzufügen ist deaktiviert.

Wie funktioniert das jetzt mit .NET?

Ich habe auch schon in einem Buch geblättert, aber da werden nur die schon vorhandenen ActiveX-Elemente beschrieben, bei denen es prima klappt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es funktioniert nicht richtig mit dem Media Player.

Ich habe der Dialogklasse eine Variable hinzugefügt, dabei kann man festlegen, ob es eine Steuerelement-Variable sein soll.

Die Variable wird allerdings mit einer "falschen" Klasse verbunden, mit der ich nichts anfangen kann, weil dort die Funktionen wie Play() und Stop() nicht enthalten sind.

Ich weis nicht mehr weiter. :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Klasse, die eingebunden wird ist COcx1_medplay.

Man kann das auch nicht beeinflussen, welche Klasse er einbindet.

In der alten Version 6.0 war es CMediaPlayer.

Auch die DialogID unterscheidet sich:

.NET: IDC_OCX2_MedPlay //MedPlay ist meine Bezeichnung

6.0: IDC_MediaPlayer2

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Narf!

Die Klasse, die eingebunden wird ist COcx1_medplay.

Man kann das auch nicht beeinflussen, welche Klasse er einbindet.

Ich hab das mal nachvollzogen: Es wird keine Klasse "eingebunden", sondern eine neu erstellt. Diese Klasse ist ein Wrapper um ein COM-Klasse, die die MediaPlayer-Interfaces (IWMP...) implementiert.

Mit put_URL solltest du die Wiedergabe starten können.

Das Ganze hat vermutlich nichts mit der Version des Visual Studio, sondern mit der Version des MediaPlayers zu tun, denn diese Interfaces sind alle für WMP 9.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe mir das mal in der Hilfe angesehen, aber so richtig nützt mir das nichts.

Das Programm muss abwärtskompatibel sein, also auch der MediaPlayer.

Im VS C++ 6.0 habe ich den WMP 7.1 eingebaut, da geht das alles mit den Funktionen, aber ich kann den nicht unter XP installieren, um ihn in .Net rein zubekommen.

Irgend wie muss man doch an die alten Funktionen rankommen, damit auch die Nutzer, die ihr System nicht ständig updaten das Programm nutzen können.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe mir aus dem Steuerelement WMP alle Klassen erstellen lassen und die Funktionen gesucht, die ich brauche.

In zwei Klassen habe ich diese auch gefunden. Nun denke ich mir, das man über die erstellte Klasse OCX1, die C++ erstellt, wenn man dem Steuerelement eine Variable zuordnet, auf diese Klassen zugreifen kann, aber wie?

Ich habe das mal so probiert:

In der Klasse OCX1 gibt es die Funktion LPDISPATCH get_settings(), meine Variable ist m_MedPlay, mein Versuch LPDISPATCH set=m_MedPlay.get_settings() brachte nicht den gewünschten Erfolg, auf die Funktionen set->get_volume() usw. zuzugreifen, es werden ganz andere Funktionen angezeigt.

Wie komme ich an die erforderlichen Funktionen??? :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 6 Monate später...

Bin wieder mal am rumprobieren und kriege es nicht gebacken.

Dann schau dir die Interface IWMPCore* und IWMPPlayer* an, da sollte alles dabei sein, was du brauchst.

Wie komme ich denn an diese Interfaces ran?

Und wie funktioniert eine Wrapper-Klasse?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...