Die Hilfe für DirectX 8 in die MSDN einbinden

ein Tutorial von Marco Leithold

 

„Wissen ist macht, nix wissen macht auch nichts!“

 

 

 

 

Einleitung

 

Nachdem ich Forum mehrmals Anfragen gelesen habe, wie man die DirectX 8 Hilfe in die MSDN einfügt. Habe ich mich entschieden ein Tutorial über dieses Thema zuschreiben.

 

Eine kleine Anmerkung mochte ich zuvor noch machen: Alle Verzeichnisangaben dienen nur als Anhaltspunkt. Des weiteren gehe ich davon aus, das ihr euch in XML einwenig auskennt, und es wird keinerlei Haftung durch evtl. Schäden übernommen die durch Nutzung dieses Tutorial enstehen könnten.

 

Kleiner Überblick

 

Die (DirectX) Hilfe besteht aus zwei Dateientypen:

 

-          CHM                // für C++:  DirectX8_c.chm

-          CHI                  // für C++:  DirectX8_c.chi

 

CHM ist eine kompilierte HTML-Hilfedatei und der Dateityp CHI ist eine sogenannte Indexdatei die meist zum Suchen benutzt wird. Beide Dateien liegen als binär Format vor. Diese Dateien findet Ihr im Unterverzeichnis „doc“ von DirectX, sowohl für C++ (*_c.*) als auch für Visual Basic (*_vb.*). Kopiert am besten diese Dateien in das Verzeichnis  ...\Microsoft Visual Studio\MSDN\2000OCT\1033 von Visual Studio, dann können wir einfacher mit diesen Dateien arbeiten. Auf das letzte Unterverzeichnis „\1033“ müssen wir noch einen kurzen Blick drauf werfen. Diese Zahl 1033 sagt aus, welche Sprache benutzt wird. Dies werden wir später noch benötigen.

 

Lasst uns Beginnen

 

Für die MSDN gibt es, außer den zwei oben benannten Dateitypen, noch ein weiteren Dateityp namens „COL“. Diese Datei ist eine XML-Datei und mit ihr können wir das Aussehen unserer MSDN, genauer den Inhalt, verändern. Es gibt zwei Möglichkeiten unser DirectX 8 in diese Datei einzubinden. Entweder wir überschreiben den Eintrag des alten DirectX, oder wir erstellen uns ein neues Unterverzeichnis für DirectX, wo wir dann auch andere Versionen unterbringen können. Beide Wege werde ich jetzt euch zeigen.

 

Alte Version überschreiben

 

Als erstes müsst ihr im MSDN-Verzeichnis nach der Datei „MSDN030.COL“ suchen und öffnet diese Datei am besten im Editor. Als nächstes müsst ihr folgenden Eintrag suchen

 

...

 

<TitleString value="DirectX"/> 

<FolderOrder value=3/>

<Folder>

<TitleString value="=dxfound"/>

            <FolderOrder value=1/>

            <LangId value=1033/>

</Folder>

<Folder>

<TitleString value="=dshow"/>

<FolderOrder value=2/>

<LangId value=1033/>

</Folder>

...

 

Im ersten Folder könnt ihr folgenden Eintrag finden:

 

<TitleString value="=dxfound"/>

 

Ändert diesen von  “dxfound” in "=directx8_c" für C++, oder in "=directx8_vb" für  Visual Basic, um. Z.B.:

 

<TitleString value="=directx8_c "/>

 

Den zweiten Folder könnt ihr ohne Probleme löschen, danach speichert die Datei ab.

 

So, wer jetzt ziemlich voreilig war, hat sicherlich schon die MSDN aufgemacht und erböst festgestellt das der Eintrag, den wir geändert haben, verschwunden ist. Aus diesem Grund müssen wir noch eine kleine Änderung in der Datei  hhcolreg.dat“ vornehmen. Ist auch nur eine XML-Datei. Es kann vorkommen, vor allem unter NT/2000, das mehrere von diesen Dateien auf eurem Rechner vorhanden sind. Deswegen sucht diese Datei am besten mit dem Such-Programm. Standardmäßig sollte sie im Windowsverzeichnis unter „Help“ sein. Solltet ihr mehrere dieser Dateien besitzen überprüft alle diese Dateien, ob es ein Eintrag der von uns geänderten Datei „MSDN030.COL“ gibt. Dies sollte ungefähr so aussehen:

 

<Collection>

            <ColNum value=10001/>

            <ColName value="C:\Programme\Microsoft Visual Studio\MSDN\2000OCT\1033\MSDN030.COL"/>

</Collection>

 

Bitte achtet drauf, dass das Verzeichnis bei euch von meinem Pfad abweichen kann und merkt euch den Wert der hier steht:

 

<ColNum value=10001/>                       // Hier muss nicht unbedingt 10001 stehen

 

Den werden wir später noch benötigen. Als nächstes scrollt ihr ganz nach unten und sucht folgenden Eintrag

 

</DocCompilations>

 

Vor diesen Eintrag fügt ihr folgendes ein:

 

<DocCompilation>

<DocCompId value="directx8_c"/>

<DocCompLanguage value=1033/>

<LocationHistory>

<ColNum value=10001/>

<TitleLocation value="C:\Programme\Microsoft Visual Studio\MSDN\2000OCT\1033\directx8_c.chm"/>

<IndexLocation value="C:\Programme\Microsoft Visual Studio\MSDN\2000OCT\1033\directx8_c.chi"/>    

<LocationRef value=""/>

<Version value=""/>

<LastPromptedVersion value=0/>

<TitleSampleLocation value=""/>

<TitleQueryLocation value=""/>

<SupportsMerge value=0/>

</LocationHistory>

</DocCompilation>

 

 

<DocCompLanguage value=1033/>        SprachVersion, ist mit eurem Verzeichniss identisch.

<TitleLocation value="”/>                       Hier muss die Datei *.chm mit ihrem Verzeichnis stehen.

<ndexLocation value="”/>                      Hier muss die Datei *.chi mit ihrem Verzeichnis stehen.

<DocCompId value=" "/>                        Hier muss das gleiche Variable stehen wir ihr sie in der Datei MSDN030.COL unter <TitleString value="“/> angegeben habt.

 

Danach speichert ihr diese Datei ab und in der MSDN-Hilfe sollte jetzt auch die Hilfe von DirectX 8 anstatt der Vorgängerversion erscheinen.

 

Eigenen Ordner anlegen

 

Oben habe ich euch gezeigt wie man eine bestehende Hilfe durch eine Neue ersetzt. Es ist dabei egal ab es eine Hilfe von DirectX ist, oder ob es eine von einem Fremd-Hersteller ist.

Als nächste möchte ich euch zeigen wie man in der MSDN ein eigenes Verzeichnis anlegt. Die Datei „hhcolreg.dat“ wird genauso für DirectX 8 (Visual Basic) genauso umgeschrieben wie oben gezeigt. Wenn ihr weitere Versionen einsetzt braucht ihr diesen Eintrag nur zu wiederholen und darauf zu achten das ihr das richtige Verzeichnis angibt und das <DocCompId value=" "/> mit <TitleString value="“/>, aus der Datei MSDN030.COL, identisch ist. Gut, dann last uns erst mal ein Blick auf das nächste Bild werfen, wie das am Ende aussehen soll. Auf eine kleine Sache möchte ich nur hinweisen, da ich eine recht neue MSDN habe, bei der Standardmäßig die DirectX-Version 7 installiert ist, kann es sein das ihr eine ältere DirectX-Versionen habt. Dies spielt hier aber weiter keine Rolle.

 

 

 

Ich gehe jetzt davon aus, das ihr zwei <DocCompilation>-Blöcke  angelegt habt. Eins für C++, das ungefähr folgenden Eintrag hat:

 

<DocCompId value="directx8_c"/>

 

Und einen für Visual Basic das so ausehen könnte:

 

<DocCompId value="directx8_vb"/>

 

Die Werte directx8_c und directx8_vb werde ich jetzt auch in der Datei MSDN030.COL benutzen.

Gut, öffnet jetzt die Datei „MSDN030.COL“. Es ist etwas schwierig für mich euch zu erklären, wo genau ihr jetzt den Code einfügen müsst, aber fangen wir einfach mal an. Wir werden den Code in der zweiten Ebene einfügen die den Namen „MSDN Library – October 2000“ hat.

 

<XML>

<HTMLHelpCollection>

<masterchm value="dsmsdn.chm"/>

<masterlangid value=1033/>

<samplelocation value=""/>

<collectionnum value=10001/>

<refcount value=0/>

<version value=1/>

<findmergedchms value=0/>

<Folders>

<Folder>

         <TitleString value="MSDN Library - October 2000"/>

         <FolderOrder value=1/>

 

         ...

 

         Hier wird ganz am Ende unser Text hinzugefügt.

 

</Folder>

</Folders>

</HTMLHelpCollection>

</XML>

 

Geht auf dieser Ebene ganz nach unten und fügt am Ende folgenden Text hinzu:

 

<Folder>

            <TitleString value="DirectX Dokumentation"/>

            <FolderOrder value=18/>

            <Folder>

                        <TitleString value="=directx8_c"/>

                        <FolderOrder value=1/>

                        <LangId value=1033/>

            </Folder>

            <Folder>

                        <TitleString value="=directx8_vb"/>

                        <FolderOrder value=2/>

                        <LangId value=1033/>

            </Folder>

            <Folder>

                        <TitleString value="DirectX 7"/>

                        <FolderOrder value=3/>            

                        <Folder>

                                   <TitleString value="=dxfound"/>

                                   <FolderOrder value=1/>

                                   <LangId value=1033/>

                        </Folder>

                        <Folder>

                                   <TitleString value="=dxshow"/>

                                   <FolderOrder value=2/>

                                   <LangId value=1033/>

                        </Folder>

            </Folder>

</Folder>

 

<FolderOrder value=18/>           Hier müsst ihr aufpassen, das vom letzten Folder der Order-Wert plus eins gestzt wird.

<TitleString value=""/>               Achtet hier auf die Schreibweise das “ =directx8_c“ eine Variable ist und "directx8_c“ nicht

anderes als ein String ist und dann auch so erscheint.

 

Schluss

 

So, jetzt habt ihrs geschafft eure Hilfe von DirectX in die MSDN einzubinden. So mit könnt ihr jetzt ohne weiteres im Quellcode durch drücken der F1-Taste die Hilfe aufrufen. Leider weiß ich noch nicht wie man die Wordergänzung beeinflussen kann, da hier normalerweise Automatisch alle Funktionen hinzugefügt werden. Wer hier Ideen hat oder andere Anregungen, wie z.B. Schreibfehler in diesem Text, kann mir dies an mLeithold@web.de  senden.  

 

 

Scania V8