Laden...
M
maxE myCSharp.de - Member
Student Sachsen Dabei seit 27.04.2004 456 Beiträge
Benutzerbeschreibung

Forenbeiträge von maxE Ingesamt 456 Beiträge

11.01.2005 - 23:28 Uhr

OK, hat sich erleding 😉
Ich muß nur ein & an den Typbezeichner für die Parameter anhängen, wenn ich DefineMethod() aufrufe:
Type t = Type.GetType("System.Int32&");

11.01.2005 - 22:43 Uhr

Hallo,

ich möchte mit dem Reflectionmechanismus eine Methode emmitieren.
Diese Methode soll einen ref Parameter enthalten. Wie kann ich einen Parameter mit den Reflection Klassen als ref kennzeichnen?
In ParameterBuilder und MethodBuilder finde ich nichts brauchbares.

Danke schon mal ...

11.01.2005 - 16:34 Uhr

Das C# grundsätzlich lahmer sein soll als C++ halte ich für ein Gerücht.
Schau dir mal Benchmarks der Axiom-Engine an. Axiom ist praktisch eine 1:1 Portierung der Ogre-Engine, die in C++ geschrieben wurde und sich deshalb gut für für Vergleiche eignet. Interessanterweise laufen einige Demos sogar schneller als ihre C++ Gegenstücke.
Nachtrag: Es wurden schon kommerzielle Spiele in C# geschrieben: Arena Wars, Alexander the Great? zum Beispiel.

11.01.2005 - 16:27 Uhr

In der WinAPI ist WORD 16-bit breit -> also ushort in C#.
Unsigned long in einem 32-bit System, entspricht dem Datentypen uint in C#.
Schau mal hier für die Datentypen:
http://www.datasource.de/programmierung/tab33_cppdatentypen.html

10.01.2005 - 14:47 Uhr

Die unterschiedlichen Autostartordner können dir eigentlich egal sein. Mit

Environment.GetFolderPath(Environment.SpecialFolder.Startup));

Erhälts du den Autostartpfad.
Du kannst auch Url-Dateien als Verknüfung nehnem.
Die sind eigentlich nur für Internet URLs gedacht, funktionieren aber auch mit lokalen Dateien.
Url-Dateien sind einfache Textdateien in der Form:

[InternetShortcut]
URL=<Pfad zur Anwendung>

08.01.2005 - 19:19 Uhr

Zum erstellen von PDFs kann man z.B. Report.NET benutzen:
http://report.sourceforge.net
Allerdings ist das kein Druckertreiber.

Es gibt aber ein freies Tool, welches als virtueller Druckerteiber fungiert:
http://sector7g.wurzel6.de/pdfcreator/
Ist dafür aber nicht in C# geschrieben.

07.01.2005 - 17:24 Uhr

Der GC löscht ein Objekt, wenn er keine Referenzen mehr auf dieses findet.
Wird meist mit Hilfe von Graphalgorithmen erledigt, die prüfen ob ein bestimmer Knoten erreichbar ist. Der GC ist ein niedrig priorisierter Thread, der hin und wieder angeworfen wird um nach solchen Referenzen zu suchen. Heute sind die GC Algorithm schon recht ausgereift und die Freigabe läuft recht schnell.
Mit deinem Array bauchst du gar nix machen. Wenn keine Referenz mehr auf dieses Array besteht und du es z.B. auf null setzt, kannst du vielleicht davon ausgehen, dass der GC dieses Array dann beim nächsten Durchlauf löscht.

http://de.wikipedia.org/wiki/Automatische_Speicherbereinigung

06.01.2005 - 19:41 Uhr

@S.H.-Teichhof

Wieso kann man 64-bit noch nicht nutzen? Linux kannst du jetzt schon in 64-bit erleben 😉
Und wie es jetzt aussieht, wird 64-bit wohl in Zukunft "breite Massentechnik" werden.

05.01.2005 - 23:26 Uhr

Ah, mit Namensraumangabe geht es also.
Ich muss dann aber beim Zugriff explizit casten um an die richtige Methode ran zu kommen. Also so:


bool b = ((ITest2)t).getData();
double d = ((ITest1)t).getData();

Zum Artikel, der im C++ Forum gepostet wird:
Kann man das nicht so lösen:
(Habe die Klassen übernommen und nur etwas erweitert um die Verwendung etwas deutlicher zu machen)

using System;
 
 namespace Test
 {
 	public class AClass { public AClass(string _s){ s = _s; } public string s; }
 	public class BClass : AClass { public BClass(string _s):base(_s){} }
 	
 	public interface IBase
 	{
 		AClass GetStuff();
 	}
 	
 	public interface IDerived : IBase
 	{
 		new BClass GetStuff();
 	}
 	
 	public class Base : IBase {
 		public AClass GetStuff() {
 			return new AClass( "Hallo von A in Base" );
 		}
 	}
 	
 	public class Derived : IDerived {
		AClass IBase.GetStuff() {
 			return new AClass( "Hallo von A in Derived" );
 		}
 		BClass IDerived.GetStuff() {
 			return new BClass( "Hallo von B in Derived" );
 		}
 	}
 	
 	class MainClass
 	{
 		public static void Main(string[] args)
 		{
 			Base b = new Base();
 			Derived d = new Derived();
 			
 			AClass a1 = b.GetStuff();
			AClass a2 = ((IBase)d).GetStuff();
			BClass b1 = ((IDerived)d).GetStuff();
 			
 			Console.WriteLine("{0}  {1}  {2}", a1.s, a2.s, b1.s );
 		}
 	}
 }

Mit dem Schlüsselwort new in IDerived kann man doch die Methode überdecken und dann mit einem Cast wieder "hervorholen".

05.01.2005 - 20:34 Uhr

Seltsam covariant return types scheinen bei MS schon zu funktionieren.
Ist euch schon mal folgendes aufgefallen:

Geht mal in eure Frameworkdokumentation und schaut euch mal Hashtable an.
Hashtable implementiert IDictionary mit der Methode

IDictionaryEnumerator GetEnumerator();

und IEnumerable mit der Methode

 IEnumerator GetEnumerator();

Wie haben die das bloß gemacht? Zwei gleiche Methoden, bloß mit unterschiedlichem Rückgabewert. Ich dachte das geht laut Artikel (noch) nicht?
Hat jemand ne Erklärung?

05.01.2005 - 20:11 Uhr

Zu den Popups:
Meine auf Codeproject gabs mal was dazu. Suche einfach mal dort 😉
Mozi einbauen:
Bei Mono gibt's Bindings für die Gecko Engine. Beschreibung: http://www.go-mono.com/docs/ ("Mozilla" Folder im TreeView)
Geht aber so weit ich weiß nur mit GTK Anwendungen.

05.01.2005 - 19:56 Uhr

Wenn ich mir einen neuen Rechner kaufen würde, dann wär das wohl einer mit AMD64 CPU.
Erstmal ist er sehr energiesparend und zweitens ist man gut für die Zukunft mit diesem Prozessor gerüstet. Willst du vielleicht doch das wohl bald erscheinende Win64 bzw. Linux mit 64-Bit Kernel betreiben, dann ist natürlich ein AMD64 Voraussetzung.

Der 64er läuft auch problemlos als 32-bit Prozessor und im 64-bit Modus erlaubt er einen Kompatibilitätsmodus für ältere Anwendungen. Auch Win64 wird - ähnlich wie Windows95 damals - eine WOW (Windows on Windows) Schnittstelle haben, um möglichst gute Kompatibiliät zu gewährleisten. Diesmal aber nicht für 16-Bit Anwendungen auf der 32-Bit Plattform sondern für 32-Bit Programme auf einem 64-Bit System.

05.01.2005 - 12:48 Uhr

Vielleicht etwas spät, aber hier gibts was für USB:

http://www.icsharpcode.net/opensource/sharpusblib/

03.01.2005 - 19:15 Uhr

Hört euch mal das an 😁
(ACHTUNG: nichts für Leute die keine Selbstironie vertragen 😉 )

http://daemlich.net/4012

LOL

31.12.2004 - 15:42 Uhr

Erinnert mich ein wenig an die C64 - Zeiten, wo fast jede zweite Demo einen Sinusscroller hatte 😉

Einen guten Rutsch wünsch ich.

28.12.2004 - 20:48 Uhr

Ihr braucht euch eigentlich nicht unbedingt auf eine IDE wie #Develop zu beschränken. Es gibt Tools die für Visual Studio, #D, NAnt, Mono, ... Projekt- bzw. Builddateien automatisch erstellen. Damit erreicht ihr praktisch alle "Zielgruppen":

http://dnpb.sourceforge.net/

26.12.2004 - 18:32 Uhr

Schau doch mal bei www.sourceforge.net. Da gibt es schon recht viele .Net Projekte.

23.12.2004 - 16:36 Uhr

2 Sprites und es ist zu langsam?
Framerate?
Mit unterschiedlicher Verwendung meine ich vor allem, ob man für jedes Objekt eine neue Spriteklasse verwendet, oder ob man eine für alle verwendet (Sprite cached die Polygondaten).

23.12.2004 - 14:56 Uhr

Yo,

frohe Weihnachten an alle im Forum!

23.12.2004 - 14:03 Uhr

Da der gelockte Speicherbereich linear ist, gibt Pitch an, an welchem welchem Offset eine neue Pixelzeile beginnt.
Umrechnung von x,y-Koordinaten in Offsetkoordinaten geht im allgemeinen so:
offset = y*pitch+x

Kleiner Hinnweis wenn du auf D3D ausweichen willst: Da Direct3D normalerweise asynchron arbeitet (Zeichenoperationen werden parallel zur Ausführung deines Programms durchgeführt ), verhindert das Locken der Offscreecn Surface diese asynchrone Verarbeitung. -> Schreiben in gelockte Surface ist recht lahm.
Überlege dir, ob vielleicht eine Pointlist, mit untransformierten Koordinaten (x,y,rhw) nicht die bessere Wahl ist.

23.12.2004 - 13:45 Uhr

Texturierte Polygone sind eigentlich so mit das Schnellste was man verwenden kann.
Das es zu lange dauert kann unterschiedliche Gründe haben.
Es kommt immer darauf an, wie viel Sprites du pro Frame renderst. Wie du die Spriteklasse verwendest und ob es in deinem Programm noch irgendwelche anderen Bottlenecks gibt. (Profiling)

21.12.2004 - 19:34 Uhr

Das Control das du suchst nennt sich Panel 😉 und ist im Windows.Forms Namensraum zu finden.

21.12.2004 - 19:13 Uhr

Ha, mit der Sprite.Draw2D Funktion hatte ich auch so meine Probleme. Ich schieb es auch auf einen Bug im Framework. Und wenn es kein Bug sein sollte, dann benimmt sich diese Funktion sehr eigenartig und wenig intuitiv.
Notfalls die Transformationsmatrix manuell setzen und mit Sprite.Draw() zeichnen.
Übrigens: nicht nur du und ich haben das Problem. Ich hab das schon öfter in anderen Foren gelesen.

Siehe hier:
http://www.zfx.info/DisplayThread.php?TID=16421
http://www.talkaboutsoftware.com/group/microsoft.public.win32.programmer.directx.graphics/messages/30801.html

17.12.2004 - 12:12 Uhr

Nee, er meint Jagged Arrays, nicht rectangular Arrays.
Die musst du, so weit ich weiß, einzeln allokieren.
z.B.:

int[][] j = new int[2][];
j[0] = new int[] {1, 2, 3};
j[1] = new int[5];

Wenn du aber sowieso weißt, dass jedes Unterelement 5 Einzelelemente hat, dann nimm ein rectangular Array.

Hier wird der Unterschied erklärt:

http://www.csharphelp.com/archives/archive93.html

17.12.2004 - 12:00 Uhr

Wenn du noch einen 1 mm Rand siehst, dann liegt das sicher am Anti-Alias deines Bildes.
Windows kann nur genau eine Farbe deines Forms transparent machen. Der Rand besteht aus Mischfarben zwischen Grün und Schwarz (in deinem Bild).
Du musst also in deinem Bildbearbeitungsprogramm "harte Kanten" am Rand deines Bitmaps machen.

15.12.2004 - 18:50 Uhr

Wenn du nur die Wahl zwischen C# und C++ hast, würde ich einem Anfänger erstmal eher zu C# raten. Und das aus folgendem Grund (ohne gleich die C-Fans zu verprellen):
Ich denke, gerade für Neulinge ist die Motivation sehr wichtig und mit C# wirst du wohl eher die ersten Erfolgerlebnisse haben als bei C
.
Um mit C++ wirklich "Spaß" zu haben, solltest du diese Sprache mit ihren vielen Eigenheiten sehr gut kennen. Das kann manchmal ewig dauern. Selbst so mancher "alter" C++-Programmierer weiß heute noch nicht mal so richtig was Template-Meta-Programmierung bedeutet.

Ich selbst hab mit dem proggen recht früh angefangen. Damals noch auf einem 8-bit Rechner mit eingebautem Basic-ROM. Später Pascal, dann C/C++ und nach ein paar Vorbehalten (Eingefleischte C++ Programmierer sind oft ziemlich einseitig fixiert😉 C# und auch etwas Python (Interessante Programmiersprache mit vielen genialen Ansätzen ).

Was Zukunftssicherheit angeht, machst du mit C# sicherlich nichts falsch.

Übrigens: es kann auch nicht schaden, dich mal mit ganz anderen Paradigmen zu beschäftigen. Funktionale Programmierung eröffnet manchmal eine ganz andere Sicht auf Probleme. So ging es mir zumindest.

08.12.2004 - 15:55 Uhr

Jo, entkorkt schon mal die Bierdosen 😉

08.12.2004 - 09:59 Uhr

Man kann durchaus Setupprojekte mit #D erzeugen. Allerdings nicht so kompfortabel wie in VS. #D nutzt die WiX-Tools von MS für die Setups. Das bedeutet, dass dein ganzes Setup aus einer XML-Datei generiert wird.
Leider ist das nicht sehr kompfortabel und übersichtlich.
Unter Sourceforge wurden schon einige Projekte ins Leben gerufen, um solche WiX-XML-Dateien automatisch zu generieren. Die meisten dieser Programme sind noch in der Planungsphase. Man muss sich also noch etwas gedulden.

Was für eine Datei konnte er denn nicht finden?

Ich nehme persönlich InnoSetup für meine Setups. Ist deutlich übersichtlicher und leichter wartbar als WiX.

06.12.2004 - 15:26 Uhr

Schau mal hier:
http://rfhs8012.fh-regensburg.de/~saj39122/bisoe/kanten.html
Da gibts auch Quellcode.

05.12.2004 - 13:44 Uhr

Weil AppSettings von einer Collection-Klasse abgeleitet wurde und die stellen immer auch Add Methoden zur verfügung. Hier sind sie allerdings funktionslos. Man wollte scheinbar das Rad nicht noch mal neu erfinden und eine spezielle Implementierung schreiben.

05.12.2004 - 13:20 Uhr

Das AppSettings read-only ist hat seinen guten Grund.
Damit soll der Kauderwelsch den heute noch viel Programmierer fabrizieren unterbunden werden.
Grundsätzlich sollte alles was sich im Verzeichnis deiner Anwendung befindet (C:\Programme\DeineAnwendung) read-only sein!!!
Konfigurationen und ander variable Daten sollten im Anwendungsdatenverzeichnis gespeichert werden ( C:\Dokumente und Einstellungen\All Users\Anwendungsdaten bzw. C:\Dokumente und Einstellungen&lt;User>\Anwendungsdaten ). Die Application Klasse beinhaltet Properties um diese Verzeichnisse zu ermitteln.
Die <App>.exe.config ist nur für spezielle Anpassungen gedacht, die einmal vorgenommen werden und sich dann im Betrieb nicht mehr ändern !!!

Spätestens wenn du deine Anwendung Multiuser fahig machen willst, bekommst du Probleme wenn du Konfigurationen immer im Anwendungsverzeichnis speicherst.
Für normale Nutzer (also kein Admin) ist das Programme-Verzeichnis immer read-only.
Das ist nämlich einer der Hauptgründe warum viele Nutzer immer im Administrationsmodus arbieten müssen. Viel Programme sind so dreist und nehmen an das sie ohne Probleme ins Programmverzeichnis schreiben können.
Viele Spiele speichern z.B. ja ihre Spielstände immer noch im Programmverzeichnis ab, obwohl sie dort überhaupt nichts zu suchen haben.

Ich wollte nur noch mal festhalten wo welche Konfigurationen abgespeichert werden, da das leider immer noch viele Programmierer (selbst im profesionellem Bereich) falsch machen 😉

03.12.2004 - 11:13 Uhr

Soweit ich weiß, gehst du beim Sobeloperator über alle Pixel im Bild und legst diese Sobel-Matrix mittig über den akuellen Bildpunkt. Alle 8 Nachbarpixel werden dann mit dem Wert in der Matrix multipliziert. Diese gewichteten Nachbarn addiert ergeben dann das neue Pixel.

02.12.2004 - 18:19 Uhr

Er meint sicherlich so was:
http://de.wikipedia.org/wiki/Sobel-Operator

29.11.2004 - 20:05 Uhr

darüber kann man sich streiten 😉

29.11.2004 - 20:01 Uhr

Nur weil sie nicht angezeigt wird, heißt das ja nicht, dass sie nicht verfügbar ist 😉
Die automatische Syntaxvervollständigung irrt sich manchmal 😉

29.11.2004 - 18:38 Uhr

Abgesehen davon, dass sich mir der Sinn eines Programms, das Dateien vom Internet herunterläd, um sie danach sofort wieder zu löschen, nicht so ganz erschließt, will ich dir trotzdem helfen 😉

mach einfach ne leere for Schleife:

for( ;; ) {...}

Lad innerhalb der Schleife die Dateien zum Beispiel mit WebClient runter. (Kannst du mit einem extra Thread realisieren). Wenn der Benutzer auf Abbrechen deines Dialogs drückt, dann kannst du die Endlosschleife mit break verlassen 😉

29.11.2004 - 18:21 Uhr

Warum deklarierst du die Funktionen in deiner Klasse nicht als static?

28.11.2004 - 19:41 Uhr

Du müsstest den Prozess schon als Systemprozess starten um ihn nicht "abschießbar" zu machen.

bin für jeden anhaltspunkt dankbar. ehrlich gesagt weiss ich nicht mal genau was windows genau macht, wenn man im taskmanager einen prozess beendet.

Normalerweise fordert Windows den Prozess erst "höflich" auf sich zu beenden (WM_QUIT in der Windows Message loop). Wenn das nicht funktioniert (Erkennt man an der "Keine Rückmeldung" Botschaft in der Titelleiste) wird Windows ihn mir "gewalt" aus dem Speicher entfernen. Das kannst du grundsätzlich nicht abfangen.

28.11.2004 - 13:17 Uhr

Es wäre sinnvoll, dich vorher etwas mit Compilerbau zu beschäftigen.
Im .Net SDK sind einige Beispiele wie man einen Compiler für MSIL schreibt.
(Verzeichnis: (...)\Microsoft.NET\SDK\v1.1\Tool Developers Guide\Samples )

Ober du machst es dir ganz einfach und nutzt die C# Compilerklassen im Framework (Microsoft.CSharp oder VisualBasic) um Quelltexte zur Laufzeit zu kompilieren. Dein Benutzer muss dann zwar C# oder VB.NET können um Makros zu schreiben, dafür ersparts du dir ne menge Aufwand für das Schreiben eines Parsers und Compilers.

26.11.2004 - 19:24 Uhr

Hallo Z-80,

damit es funktioniert darf die Definition von IPlugIn nur in deiner Hostanwendung geschehen. Keine Kopie des Quelltextes in deinem PlugIn Projekt!! Mach eine Referenz von deiner PlugIn-Assembly auf dein Hostprogramm, um die Schnittstelle zu bekommen.
.NET speichert nämlich noch diverse Metainformationen, um einen Typ zu identifizieren. Auch wenn der Quellkode von IPlugIn in beiden Assemblies gleich ist, werden sie als zwei unterschiedliche Typen angesehen ( -> InvalidCastException )
Also: die IPlugIn Schnittstelle gehört in deine Hostanwendung und nicht in dein Plugin.

26.11.2004 - 19:10 Uhr

Deine Frage ist vielleicht auch etwas ungenau, Rodney.
Willst du kartesische Koorinaten in Polarkoordinaten umrechnen?
So was steht in jedem gutem Mathe-Buch/Formelsammlung oder hier:
http://de.wikipedia.org/wiki/Polarkoordinaten

24.11.2004 - 21:12 Uhr

Mit Application.Run musst du nicht zwangsläufig deine Form Anwendungen starten.
Sie macht ja nichts weiter, als in die Windows Message Loop einzutreten. Intern, glaube ich, dass Appliaction.Run nichts weiter macht als

while(form.Created)
   Application.DoEvents();

Hauptmann hat die Message Loop explizit angegeben, da er mit example.Render(); für jeden Frame das Fenster neu zeichnen will.
Also normale Windowsanwendungen warten auf Nachrichten die sie von Windows bekommen und verarbeiten sie dann. Bei Spielen macht man das oft etwas anders. Dort muss zusätzlich, zu den Nachrichten der Bildschirm ständig neu berechnet werden, deswegen auch die while() Schleife mit dem Aufruf der Render Funktion.

24.11.2004 - 18:57 Uhr

Hallo,

ich würd das so machen:
Am Anfang schreib ich mir ne einfache Gameloop, die immer wieder dein Spielfeld zeichnet und am Ende einen Pageflip durchführt. (Siehe DX Tutorial hier im Forum)
Mit DirectInput kannst du die Tastatur abfragen. Je nachdem welche Taste du gedrückt hast, würde ich die x-Koordinate deiner Kugel bei jedem Frame inkrementieren bzw. dekremtieren.
Um flüssige Bewegungen zu erzeugen, musst du deine Objekte mit Hilfe der Zeitdifferenz des jeweiligen Frames verschieben.
Die anderen Kugeln, die dir entgegen kommen, würde ich mit einer Zufallszahlen für ihren Startpunkt initialisieren. Und auch hier inkrementierst du die y-Koordinate deiner Objekte bei jedem neuem Frame zeitabhängig.
Ob sich zwei Kugeln treffen, kannst du mit dem Satz des Pythagoras berechen.
Abstand = sqrt( x2 + y2 ). Ist der Abstand kleiner als der Radius beider Kugeln, so liegt eine Kollision vor.

Ich hoffe ich konnte dir ein paar Anreize geben.

21.11.2004 - 16:50 Uhr

Schau dir mal System.Web.HttpUtility an.
Da ist ne Funktion drin die heißt UrlDecode ( bzw. UrlEncode).

21.11.2004 - 14:34 Uhr

Ich seh gerade mein Link ist sogar von Oktober 2004.
Gibt es eigentlich ein ChangeLog vom Summer zum Oktober SDK.
Ich hab nämlich im Summer 2004 SDK einige Bugs gefunden und würd gern wissen ob die das gefixt haben.

20.11.2004 - 19:40 Uhr

Ja, ja. "Hackerfilme" sind schon lustig. Voller Klischees und alberner Bildschirmschoner 👅

Der einzigste einigermaßen bodenständige Film zu diesem Thema war 23.
"Hackers" z.B. konnte man überhaupt nicht mehr ernst nehmen 😉

18.11.2004 - 14:48 Uhr

Ich habe früher auch die 2003 SDK benutzen wollen. Da hatte ich auch Probleme mit den Asseblies die nicht gefunden wurden. Mit der DirectX SDK von 2004 ging es dann aber recht gut.

http://www.microsoft.com/downloads/details.aspx?FamilyID=fd044a42-9912-42a3-9a9e-d857199f888e&displaylang=en

18.11.2004 - 11:40 Uhr

Hi,

unter windows kannst du High Performance Counter nehmen. Du musst sie mit pinvoke (C#) einbinden:

[DllImport(kernel32.dll, CallingConvention=CallingConvention.StdCall, ExactSpelling=true, SetLastError=true), SuppressUnmanagedCodeSecurity]
private static extern bool QueryPerformanceCounter(out long performanceCount);

[DllImport(kernel32.dll, CallingConvention=CallingConvention.StdCall, ExactSpelling=true, SetLastError=true), SuppressUnmanagedCodeSecurity]
private static extern bool QueryPerformanceFrequency(out long frequency);

Mit QueryPerformanceFrequency kannst du die aktuelle Frequenz ermitteln, mit der der interne Timer arbeitet. (Takte pro Sekunde, kann auf jedem System unterschiedlich sein)
und mit QueryPerformanceCounter kannst du den aktuellen Timerwert abfragen.

Bei java musst du die Funktionen dann über JNI einfügen.

17.11.2004 - 18:31 Uhr

Der Dateiname ist schon in Ordnung. Die Assemblies werden mit einer Versionsnummer und einer eindeutigen Id m GAC abgelegt um Versionskonflikte zu vermeiden.
Es gab mal Probleme mit älteren Versionen von der DX SDK im Zusammenhang C# (Hatte ich auch). Im Summer SDK (2004!! nicht 2003) ging es dann aber reibungslos.

17.11.2004 - 17:13 Uhr

Im Summer SDK für DirectX ist eigentlich schon alles drin. Du musst allerdings die Referenzen auf die DirectX Assemblies hinzufügen, sonst werden sie nicht gefungen.(In der Projektansicht links auf Refenenzen klicken und dort aus dem GAC hinzufügen)