TRADUIRE les HEADER'S FILES .h

SDK10.0 + CRT ,traduit prêt à l'emploi a utiliser avec UASM,HJWASM
HeadInc Version US ,version francaise dans Editmasm

 Outil de traduction gratuite de site Internet
by FreeWebsiteTranslation.com

Headinc est le traducteur de header fourni avec editmasm.Il effectue un réel travail de traduction qui permet d'utiliser les fichiers produits en 32 ou 64 bits.
Des corrections manuelles sont inévitables d'ou l'utilité d'un stock de fichiers traduits.
Ces inclus sont les seuls a vous garantir un alignement correct des structures ainsi qu'une adaptation a votre système.
Une fois compilé,ils vous garantissent un fonctionnement correct.
Enfin,ils permettent de n'utiliser que les librairies fournis par microsoft et permettent de mélanger du code C et asm sans problème.

Utiliser JWASM,UASM,ASMC avec les headers traduits ou faites des corrections pour ML
Les possibilités des MLXX sont trop limités pour permettre une traduction simple.

Liste de fichiers utilisables sans correction:

 

La traduction vous donne maintenant les mêmes possibilités que le windows sdk.Vous pouvez utiliser du code en 32 ou 64 bits,l'alignement des structures est le même que les headers c++.Vous pouvez les utiliser sur tout systeme windows,de win 95 a windows 10,il suffit de modifier les constantes données par before_use_me.exe....

L'usage en est des plus simples,"Include sdk64.inc" ou "Include sdk32.inc"

Rajouter ensuite les inclus particuliers à votre application,richedit.sdk,commctrl.sdk,stdio.sdk ....
En cas de difficultés avec les constantes,utiliser constantes.cpp,cl répondra lui même.

Tout n'est pas parfait.Si vous ne trouverez aucune erreur a l'éxécution,les limitations de masm par rapport au c++ rendent la tache ardue.A la compilation,des corrections manuelles pourront être nécessaires pour modifier des constantes trop longues,des noms incompatibles.

Critère de choix d'un assembleur plutôt qu'un autre:

Traducteurs:

Ils sont fort peu nombreux,Aucun n'est parfait,et tous demandent des corrections manuelles et des contrôles.Des corrections mineures peuvent intervenir dans le windows sdk traduit,sans pour autant faire l'objet de communications détaillés.Masm n'admet pas les redéfinitions d'un même prototype,ajout d'un fichier de ressource..Toutes corrections n'ayant aucune incidence sur le code.

Interfaces:

          La syntaxe d'écriture des interfaces est la suivante:
          *
La structure contenant les proto (vector table) est nommé STNomInterface
          * le pointeur doit être nommé ppvNomInterface
          * La macro est nommé NomInterface,elle remplace invoke et permet un appel directe des fonctions

    Si vous voulez utiliser l'interface IPicture,(celle qui permet d'utiliser les .jpg et .gif)
    Créer son pointeur en data,en rajoutant ppv a son nom (ou copier son nom depuis la macro)
             ppvIPicture dd 0

    Rechercher le nom de son fichier  .SDK,liste.txt ou msdn vont vous dire que l'interface est défini dans
                               Header: Declared in ocidl.h  >>  ocidl.sdk
    Insérer ocidl.sdk dans votre source
    .Il ne reste plus qu'a utliser les fonctions de l'interface en remplaçant invoke par le nom de l'interface
            IPicture get_Width,addr hmWidth
            IPicture get_Height,addr hmHeight
    Les macro COM ou coinvoke permettent d'utiliser plusieurs pointeurs pour une même interface
    Voir translateXX.inc dans le répertoire shared

    Il arrive qu'une interface soit référencé par plusieurs pointeurs,dans ce cas on utilise coinvoke avec un autre nom de pointeur.
    en utisant pIpicture comme pointeur d'interface le code ci dessus peut se réécrire:
    coinvoke pIpicture,Ipicture,get_Width,addr hmWidth

     

    Editmasm génère une bonne partie du code nécessaire à l'implémentation d'une interface


        ;----------------------------------------------------------------

 

 Guide des éventuelles corrections a faire:

 

Internal error (message de ml):

error LNK2001: unresolved external symbol

Erreur ml sur un record:

Erreur de traduction:

 

Sources écrits avec windows.inc

Incompatibilité de Nom avec Masm

 

Certains noms de fonctions sont incompatible avec masm.fabs en est un exemple.On peut comme le fait masm32,rebatir la librairie (certains sources sont fournis par le SDK,CRT..) au prix d'une incompatibilté de cette librairie avec les autres modules windows.La méthode la moins contraignante est d'utiliser un lien dynamique sur la fonction.L'avantage de la méthode est d'utiliser la librairie tel quel.

 

 

 

Si vous trouver cette traduction utile et apporter des corrections aux fichiers,n'hésiter pas en m'en faire part,cela peut servir aux autres.

 

Oleview

C'est un outil puissant contenu dans le SDK.Il permet ,entre autre choses,de traduire en texte les typelib.Il ne reste plus qu'a traduire ces typelib pour masm de la manière suivante.

Copier le texte de la typelib dans un fichier texte et donner lui l'extension .idl.Lancer midl (outil SDK) en lui passant le nom du fichier .idl,ajouter /h nom.h.Il va produire plusieurs fichiers en .c,.h et .tlb.

Dans le .c on trouve le clsid et le IID de l'interface.

Le .h et le .c sont traduisibles par le traducteur d'editmasm.

Ce n'est pas difficile à faire et cela permet de programmer à peu près tout ce qui se trouve sur votre micro

 

exemple: midl cab.idl /h cab.h

Ml64 Macro Proto