[Windows] Nomenclature des fonctions : comprendre les windowseries

Nomenclature des fonctions : comprendre les windowseries [Windows] - C++ - Programmation

Marsh Posté le 04-09-2003 à 22:40:08    

une fonction se declare generalement : valeur retourné par la fonction nom de la fonction (parametres)  
 
ex : int main (void)  
 
mais en win 32 il y a souvent un argument (generalement WINAPI LRESULT ou CALLBACK) entre la valeur retourné et le nom de la fonction  
 
ex:
1-ok c'est le type que la fonc. va renvoyer
2-c'est le nom de la fonction
3-ce sont les param. de la fonc.
 
 1   ???     2             3
int WINAPI WinMain (HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine,
                    int iCmdShow)
 
autre exemple :
   1       ???        2            3
LRESULT CALLBACK WndProc (HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam);
 
Je sais que c'est un peu fouis ,mais je veus etre sur de tout bien comprendre


Message édité par bleuerouge le 04-09-2003 à 22:51:58
Reply

Marsh Posté le 04-09-2003 à 22:40:08   

Reply

Marsh Posté le 04-09-2003 à 22:42:35    

bienvenu dans l'API bordélique de Windows. fuis si tu peux

Reply

Marsh Posté le 04-09-2003 à 22:45:25    

ca paraît pas être une réponse très constructive :/
 
(corrigez moi si je me trompe :)
WINAPI, CALLBACK etc correspond a __fastcall, __stdcall, et d'autres qui précisent l'en-tête de la fonction : si c'est l'appelant ou l'appelé qui s'occupent de la pile (me semble que ca gere d'autres choses)


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 05-09-2003 à 03:26:21    

@ all
  Les windowseries sont sur MSDN (www.msdn.microsoft.com)
 
@ Taz
  Je plussoie... Faut partir loin, très loin !

Reply

Marsh Posté le 05-09-2003 à 03:29:53    

En plus, depuis l'arrivée de .Net, la maintenance de la documentation de l'api de Windows est délaissée... C'est quasiment ".Net or die".

Reply

Marsh Posté le 05-09-2003 à 09:12:10    

BlackGoddess a écrit :

ca paraît pas (corrigez moi si je me trompe :)
WINAPI, CALLBACK etc correspond a __fastcall, __stdcall, et d'autres qui précisent l'en-tête de la fonction : si c'est l'appelant ou l'appelé qui s'occupent de la pile (me semble que ca gere d'autres choses)


 
C'est à peu près ca oui. Elles changent également le mangling (connais pas le terme français) de la fonction, et l'ordre dans lequel les arguments sont passés.
 
La majorité des fonctions de l'API Win32 sont __stdcall (PASCAL, WINAPI, CALLBACK, c'est pareil), la différence entre __fastcall et autres :
 
__stdall
- les arguments sont passés de droite à gauche
- la fonction appelée s'occupe du stack
- impossible de faire des varargs (...), je suppose
 
__cdecl
- "mode" par défaut en C++
- arguments passés de droite à gauche
- la fonction appelante s'occupe du stack (varargs possible)
 
__fastcall
- de droite à gauche, sauf les deux premiers arguments de 32-bit ou moins qui sont passés via les registres
- stack géré par la fonction appelée
 
__thiscall
- pour les méthodes
- on peut pas le spécifier soit meme..
 
Voila, j'espere que ca t'éclaire un peu.
 
 
Edit: souligner un truc avec des underscores c'est bof


Message édité par Ashe2 le 05-09-2003 à 09:12:57
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed