Narf! Geschrieben 10. Oktober 2003 Geschrieben 10. Oktober 2003 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. Zitieren
Klotzkopp Geschrieben 10. Oktober 2003 Geschrieben 10. Oktober 2003 Hat da jemand vielleicht diese Datei dem Projekt hinzugefügt oder per include-Direktive eingebunden? Diese Datei gehört zum MFC-Quellcode, und den compiliert man ja normalerweise nicht, die DLLs liegen ja vor. Zitieren
Goos Geschrieben 10. Oktober 2003 Geschrieben 10. Oktober 2003 Ernsthaft Narf!? Du konvertierst alte Projekte? Goos Zitieren
Klotzkopp Geschrieben 10. Oktober 2003 Geschrieben 10. Oktober 2003 Original geschrieben von Goos Ernsthaft Narf!? Du konvertierst alte Projekte? Du hast zwar nicht mich angesprochen, aber trotzdem: Wieso nicht? Das klappt eigentlich ganz gut. Zitieren
Goos Geschrieben 10. Oktober 2003 Geschrieben 10. Oktober 2003 Wirklich?...auch bei "groesseren" Projekten? ...und wo ist da der Sinn dabei? (mal abgesehen von privatem Gebrauch) bzw. wer kann sich das leisten, ein fertiges Projekt noch zu konvertieren? Goos Zitieren
Klotzkopp Geschrieben 10. Oktober 2003 Geschrieben 10. Oktober 2003 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 verbessertDer Compiler hat sich stark verbessertEine 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? Zitieren
Goos Geschrieben 10. Oktober 2003 Geschrieben 10. Oktober 2003 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 verbessertDer Compiler hat sich stark verbessertEine 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 Goos Zitieren
Narf! Geschrieben 10. Oktober 2003 Autor Geschrieben 10. Oktober 2003 Ups, keine Ahnung, wie die da reingekommen ist. Jedenfalls habe ich sie gelöscht und nun gehts. Zitieren
Narf! Geschrieben 17. Oktober 2003 Autor Geschrieben 17. Oktober 2003 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. Zitieren
Klotzkopp Geschrieben 17. Oktober 2003 Geschrieben 17. Oktober 2003 Wenn du nichts an den Einstellungen änderst, baut VC7 Programme für Windows XP. Das wird gesteuert über das Präprozessor-Define _WIN32_WINNT. Wenn du Windows-98-kompatible Programme bauen willst, solltest du das auf 0x0410 setzen. Zitieren
Narf! Geschrieben 17. Oktober 2003 Autor Geschrieben 17. Oktober 2003 Wo kann ich das denn machen. Ich habe in der Hauptheader-Datei eingetragen #define WINVER 0x0400 Muss ich das auf 0x0410 setzen? Bitte schnell. Zitieren
Idexe Geschrieben 20. Oktober 2003 Geschrieben 20. Oktober 2003 Hallo, bei uns in der Firma wurden alle Projekte konvertiert. Nur nicht von Produkten, die nicht mehr gepflegt werden. Wegen deinem Problem: Schau mal ob bei Dir irgendwo #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS steht. Wenn ja dann solltest du das mal Löschen. Zitieren
Narf! Geschrieben 29. Oktober 2003 Autor Geschrieben 29. Oktober 2003 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? Zitieren
Narf! Geschrieben 17. November 2003 Autor Geschrieben 17. November 2003 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. Zitieren
Narf! Geschrieben 28. November 2003 Autor Geschrieben 28. November 2003 Ich habe es aufgegeben und schreibe es mit .Net nochmal. Dabei ist mir beim Debuggen folgende Meldung aufgefallen: Control tried to invalidate pixels outside its bounds. Ist da irgend was mit meinem Dialog nicht iO? Zitieren
Narf! Geschrieben 1. Dezember 2003 Autor Geschrieben 1. Dezember 2003 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. Zitieren
Narf! Geschrieben 3. Dezember 2003 Autor Geschrieben 3. Dezember 2003 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: Zitieren
Klotzkopp Geschrieben 3. Dezember 2003 Geschrieben 3. Dezember 2003 Um welche Klasse handelt es sich denn? Zitieren
Narf! Geschrieben 4. Dezember 2003 Autor Geschrieben 4. Dezember 2003 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 Zitieren
Klotzkopp Geschrieben 4. Dezember 2003 Geschrieben 4. Dezember 2003 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. Zitieren
Narf! Geschrieben 4. Dezember 2003 Autor Geschrieben 4. Dezember 2003 Ich möchte eben nicht nur wiedergeben, sondern auch die Position im Track abfragen bzw. setzen, den Dateinamen, der gerade gespielten Datei auslesen usw. Zitieren
Klotzkopp Geschrieben 4. Dezember 2003 Geschrieben 4. Dezember 2003 Dann schau dir die Interface IWMPCore* und IWMPPlayer* an, da sollte alles dabei sein, was du brauchst. Zitieren
Narf! Geschrieben 5. Dezember 2003 Autor Geschrieben 5. Dezember 2003 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. Zitieren
Narf! Geschrieben 9. Dezember 2003 Autor Geschrieben 9. Dezember 2003 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: Zitieren
Narf! Geschrieben 15. Juni 2004 Autor Geschrieben 15. Juni 2004 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? Zitieren
Empfohlene Beiträge
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.