SOUS CLASSEMENT DE EDIT (WIN32)

littlefl Messages postés 21 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 2 juillet 2003 - 18 mars 2003 à 13:25
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 12 juin 2005 à 09:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10568-sous-classement-de-edit-win32

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 juin 2005 à 09:32
ben écris le où tu veux, rajoute une ligne sous le CallWindowProc pour stocker le résultat.
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
12 juin 2005 à 02:34
Salut Brunews, est-ce que tu saurais, quand on sous-classe un controle, récupéré le lResult comme le fait Spy++ ?

Merci
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
6 juin 2005 à 16:04
Nikel, c'est ce que je cherchais, merci.
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
26 juin 2003 à 20:17
ok thx;)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 juin 2003 à 20:14
y ressemble dans son mode de fonctionnement mais permet des choses qui seraient beaucoup plus longues a ecrire sous forme macro. Le but reste le meme, insertion du code a la place d'un appel de fonction.
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
26 juin 2003 à 20:07
le inline c'est comme un macro?
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
19 mars 2003 à 10:16
Oui la fonction inline sera plus rapide si tu l'appelles une seule fois. Ce que je voudrais te faire comprendre, c'est qu'en suivant ce raisonnenement, à chaque fonction que tu vas programmer, tu vas te demander combien de fois telle fonction va être appellée pour la mettre ou non inline. Il suffit en suite d'appeller plusieurs fois la fonction pour que le 'inline' devienne un inconvéniant plutôt qu'un avantage.
littlefl Messages postés 21 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 2 juillet 2003
18 mars 2003 à 22:50
Kaid : "Il te faut des preuves pour comprendre qu'une fontion inline d'une ou deux lignes sera plus rapide qu'un appel de fonction" Je suis d'accord avec toi mais le sujet c'était les fonctions inlines pour un appel unique, sinon je sais à quoi sert une fonction inline, je ne suis peut-être pas de ton niveau mais là je sais ;) merci quand même...
"le fait de mettre inline une fonction de N lignes juste parce que tu l'appelles une fois sera seulement plus rapide si tu l'appelles une et une seule fois", au cas où tu ne l'aurais pas remarqué on parle ici de fonction inlines appelée UNE seule fois donc le "seulement" est de trop; de plus tu confortes ma théorie (puisque tu apportes un argument en ma faveur en disant toi même que les fonctions appelées une seule fois sont plus rapides inlines) sans rien apporter à ta thèse...
Cependant j'en ai assez entendu, BruNews m'a fourni une preuve suffisante à savoir l'histoire de la pile mais si tu as d'autres arguments, fais les moi parvenir...

BruNews : Moi je parlais de l'accès dans le code C++ via les pseudos-variables _EAX et autres... Mais je sais qu'il ets parfaitement possible d'inclure du code ASM dans VC++ (je l'ai aussi ;). Pour la question de la fonction inline après c'est une question de priorités ^^.
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
18 mars 2003 à 20:54
Des preuves ? Il te faut des preuves pour comprendre qu'une fontion inline d'une ou deux lignes sera plus rapide qu'un appel de fonction alors que le fait de mettre inline une fonction de N lignes juste parce que tu l'appelles une fois sera seulement plus rapide si tu l'appelles une et une seule fois.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 mars 2003 à 20:48
Sur VC++ aussi j'ai acces aux registres, suffit d'inserer asm inline. Ce que je fais ordinairement mais ici le but etait de mettre un exemple pour une question du forum. De + cette fonction sans parametres doit consommer 4 cycles aller et autant en retour EIP, quasi rien donc. J'ai fait verif inline et non, sortie asm du compilo 20 octets de moins sur stack, alors restera non inline.
littlefl Messages postés 21 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 2 juillet 2003
18 mars 2003 à 20:36
BruNews : Je vois ce que tu veux dire mais c'est un choix ;). Mais j'aimerasi te poser une question qui n'a rien à voir, pourquoi ne aps programmer sous BC++ et nettoyer ton stack à la main (puisqu'on a accès aux registres directement) ?

Kaid : "C'est pas parce qu'on n'appelle une seule fois une fonction qu'il faut la mettre inline. C'est à réserver aux petites fonctions (style get/set d'un attribut) où il y aura un gain de remplacer un appel de fonction pour la ligne de code correspondante."
Je ne sais pas pour toi mais j'ai l'habitude de donner des preuves avec mes arguments...
Quand j'écris des librairies, c'est sous forme de DLLs et à moins d'écrire des librairies de templates, le cas des fonctions inline ne me préoccupe guère... Si tu parles du travail en groupe et bien chacun sait ce qui doit être ou pas donc le problème ne se pose pas.
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
18 mars 2003 à 13:45
littlefl: C'est pas parce qu'on n'appelle une seule fois une fonction qu'il faut la mettre inline. C'est à réserver aux petites fonctions (style get/set d'un attribut) où il y aura un gain de remplacer un appel de fonction pour la ligne de code correspondante.
Sinon quand tu écris n'importe quoi (classe, ..., .) pour d'autres utilisateurs, comment tu sais si l'utilsateur va appeller 0, 1, 2, ..., fois ta fonction ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 mars 2003 à 13:36
NON. un compilo c'est con, si je mets inline ESP ne sera pas releve avant entree dans AppWndProc(). Bien entendu ici c'est pas grave mais dans un prog important j'aime preserver au maximum la pile. Si je le reecris en asm certain que je ne ferai pas un bloc InitInstance() mais ici c'est VC++ qui ecrit asm.
littlefl Messages postés 21 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 2 juillet 2003
18 mars 2003 à 13:25
char *szappname = "SubclassEdit";
Il vaut mieux ne pas déclarer les chaînes comme ça mais en tant que tableau char szappname[] = "SubclassEdit"; puisque, même si je n'ai pas lu ta source mais juste parcouru des yeux, je pense que tes chaînes sont constantes donc char * encombre inutilement.
Ta fonction InitInstance() n'est appelée qu'une seule fois donc => inline, AdaptChilds n'est lui aussi appelé qu'une seule fois donc => inline.
Puis pourquoi tu utilises une fosi sur deux la notation de noms de variables totalement en minuscules puis une autre fois celle qui alterne majuscules et minuscules ?

@+