Win XP - Win Me



  • Ich hab ein Programm auf Win XP kompiliert, und jetzt mal auf nem WinMe Rechner gestartet. Und so ziemlich alles, was mit der Anzeige (per GDI) zu tun hat, wird dort verdammt falsch angezeigt.. also wirklihc komplett falsch. Weiß jemand, wie ich es so kompilieren kann, dass auch Win Me (und dann warhscheinlich auch 98) damit zurecktkommt?



  • Am besten gleich unter 98 coden.



  • Ja, schon klar... aber wenn man nunmal an nen XP-Pc gebunden ist, dann kann man das nunmal nicht ändern. Gibts da denn keine Möglichkeit, dem Compiler zu sagen, er soll im Win98-Style kompilieren? Oder bestimmte Dateien, die man mitliefern kann, sodass es dann auf jedem Betriebssystem gliehc aussieht?



  • Am besten mit VC++ 6 erstellen, ohne .NET und keine Funktionen verwenden, die erst ab NT laufen (siehe MSDN). Welche Funktionen werden denn falsch oder irgendwie anders oder überhaupt nicht dargestellt? Es gibt auch Probleme mit Zahlenlimits bei Koordinatensystemen.



  • Nein, NT-spezifische Funktionen benutz ich natürlich nicht =). Und von NET hab ich auch nix in meinem Programm (benutze VC++ 6.0). Es werden alle KoordinatensystemFunktionen falsch dargestellt. Ein paar Beispiele:
    CDC::SetViewportOrg/Ext
    CDC::SetWindowOrg/Ext
    CDC::SetMapMode
    und andere dieser Art. Kurzum: Eine ordentliche Darstellung wird unmöglich.



  • Weiß denn keiner, wie man das Problem in den Griff bekommen kann? Vielleicht irgendwelche Alternativen zu diesen Funktionen, oder vielleicht gibts ne möglichkeit, dem Compiler Win 98 vorzugaukeln (oder ne Einstellungsmöglichkeit?) ?



  • Original erstellt von DerGhost:
    Weiß denn keiner, wie man das Problem in den Griff bekommen kann? Vielleicht irgendwelche Alternativen zu diesen Funktionen, oder vielleicht gibts ne möglichkeit, dem Compiler Win 98 vorzugaukeln (oder ne Einstellungsmöglichkeit?) ?

    1. Programm unter Win98 compilen
    2. Ist unter Xp evtl. diese "tolle" Lunaroberfläche aktiviert ? Evtl. macht die Probleme ?


    1. Also, wie bereits gesagt, kann ich an den Umständen (d.h. dem Pc und dem Betriebssystem mit dem ich arbeiten muss) nichts ändern.
    2. Die Oberfläche ändert nichts.. ich hab bereits sowohl den klassischen als auch dne neuen Stil ausprobiert, daran kanns nciht liegen.

    Aber mal ganz prinzipiell - es kann doch nicht sein, dass es unmöglich ist, mit Windows XP ordentliche halbwegs kompatible Programme zu erstellen,, oder? Es MUSS dohc ne möglichkeit geben. Hat denn sonst keienr dieses Problem?



  • Hallo,

    doch ich habe massiv diese Probleme und ich habe nunmal eine Aldimöhre neben meinem Rechner stehen auf dem ich ME habe. EInaml zum testen und einmal zum compilieren. Wenn Du zum verrecken keinen zweiten Rechner bekommen kannst dann mache es mit Wechselfestplatten oder mit Partitionen und haue da ME drauf.

    Ocrana



  • In der stdafx.h sind doch ein paar Konstanten definiert, die was zur
    Windowsversion usw. sagen. Probiers doch mal damit, vieleicht hilft's
    ja.

    mfg



  • Nein, in der stdafx.h ist aus meiner Sicht nichts passendes zu finden. Scheint ja ein echt nohc ungelöstes Problem zu sein, werd dann wahrscheinlich Win 98 oder Me auf die zweite Festplatte installieren (tolle Lösung, aber was solls...)
    Auf jeden Fall danke an alle, die zu helfen versucht haben.
    Mfg Georgi



  • Das kann sein wenn du noch VC++ 6 benutzt, aber bei meinem VC++ .net wird das vom Assistenten mit in die stdafx.h reingeschrieben. Musste halt die paar Zeilen von Hand reinschreiben! Kann mich jetzt leider nicht mehr genau dran
    erinnern wie die Konstanten genau heißen, irgendwas mit WIN_... , einfach mal
    MSDN nachschauen.



  • Hm.. also ich hab ehrlich gesagt nichts gefunden im Bezug auf diese Win_-Konstanten, dafür stand in der MSDN aber was davon, dass Koordinatensystemfunktionen unter Win98/Me als 16-Bit-Funktionen, unter Win NT und Win XP allerdings als 32 Bit Funktionen arbeiten, und daher Fehler entstehen können. Die Frage wäre jetzt: Wie krieg ich den Compiler dazu, auch unter Win XP die alten (16 bittigen) Versionen der nötigen Funktionen zu kompilieren? FAlls jemand eine solche Möglichkeit kennt (ist eine dieser WIN_ Konstanten so eine Möglichkeit? wenn ja - könte mir jemand die dazu gehörige Konstante nennen? ) wäre ich ihm sehr verbunden.



  • Was genau wird denn in Bezug auf das GDI in Win98 falsch angezeigt?
    (Beispiele)
    Bei mir sieht das immer gleich aus!

    [ Dieser Beitrag wurde am 04.12.2002 um 08:16 Uhr von RenéG editiert. ]



  • Also, ich benutze CDC::SetMapMode und SetViewportExt/Org in meiner OnDraw in meinem SDI-Programm um ein Koordinatensystem zu erstellen, bei welchem die x-Achse nach rechts und die y-Achse nach oben hin verläuft (wie man es aus mathe kennt) und außerdem soll der koordinatenursprung in der mitte des bildschirms liegen, und eingie andere änderungen noch.
    Scheinbar funktionieren diese funktionen die ich unter XP kompiliert habe, auf Win98 GAR NICHT, denn sie verändern nix an der darstellung, und während das prog unter xp prima läuft, seh ich bei win98 ne darstellung, als hätte ich die funktionen nie aufgerufen.



  • Vielleicht liegt das an der MFC-Runtime DLL, vielleicht wird auf ME ne andere als auf XP benutzt. Vielleicht liegt es daran.



  • meinst du diese Datei mfc42.dll ? Die ist schon seit Win98 glaub ich standardmäßig dabei und ist bei XP auch nicht neuer - oder irre ich mich da?



  • Also an der MFC-DLL liegts auf keinen Fall.
    Einzig und allein was es sein könnte, ist, wenn Du Die Viewport- oder Window-Extensions grösser als 16bit (32767) sind, da WinME nur mit 16bit GDI arbeitet.



  • Nein, die Extensions sind nur so groß wie die bildschirmaulösung (werte über 1600 kommen da ziemlich sichernicht vor). Aber nciht nur das, auch SetMapMode scheint ja nicht zu funktionieren, also wird es wohl an was anderem liegen. 😞



  • Ok, ich habs gelöst. Folgender Fehler: In meinem Code rief ich zuerst SetViewportExt, danach SetWindowExt auf. Da aber diese Reihenfolge nach dem Aufruf SetMapMode(MM_ISOTROPIC) verboten ist (es muss andersherum passieren), kam bei Win 98/Me der Fehler, dass die Funktionen wirkungslos blieben. WinXP dagegen scheint auch die falsche Reihenfolge der Funktionsaufrufe zu akzeptieren.


Anmelden zum Antworten