Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2366 connectés 

  FORUM HardWare.fr
  Programmation

  [Visual C++] fonctions Callback

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Visual C++] fonctions Callback

n°44432
__Lolo__
C'est pouleversant !
Posté le 03-07-2001 à 17:48:20  profilanswer
 

dans la série lolo et sa dll ...  :D  
 
j'ai :
- une fonction callback, définie ds l'appli qui utilise la dll
- une fonction machin qui prend un handle HWND censé représenter la callback (?)
 
en gros ca se raccorde comment les 2 morceaux ? (explications avec du code, ca serait trop fort !)
 
merci  :jap:

mood
Publicité
Posté le 03-07-2001 à 17:48:20  profilanswer
 

n°44440
BENB
100% Lux.
Posté le 03-07-2001 à 18:16:00  profilanswer
 

Le moins que l'on puisse dire c'est que c'est pas clair...
 
HWND comme sa je dirais que c'est un Handle de fenetre :D mais bon peu importe...
tu appelle la fonction machin et tu lui passe la fonction sans mettre d'argument avec un & devant... (optionnel il me semble mais je ne suis pas sure...)
 
maintenent verifie que HWND est bien un pointeur sur un CallBack j'en doute un peu quand meme...

n°44443
__Lolo__
C'est pouleversant !
Posté le 03-07-2001 à 18:21:58  profilanswer
 

désolé si c pas clair, ca l'est pas pr moi deja :D
 
si g tt suivi a ce qu'on a tenté de m'expliquer, le HWND c equivalent a un int (ca serait comme un identifiant en gros)
 
le probleme c justement que je sais pas comment recuperer la callback a partir de cet identifiant
on m'a parlé de prog windows et comme quoi ct courant de faire comme ca ...  :??:
 
j'ai essayé de regarder a callback ds la msdn ms bon ds le genre limpide on fait mieux...
 
bref c la memerde
 
 :hot: help :hot:


---------------

n°44457
youdontcar​e
Posté le 03-07-2001 à 19:38:15  profilanswer
 

__Lolo__ a écrit a écrit :

le probleme c justement que je sais pas comment recuperer la callback a partir de cet identifiant
on m'a parlé de prog windows et comme quoi ct courant de faire comme ca ...  :??:


toujours pas clair :D si tu expliquais (en détail ?) ce que tu veux faire.

n°44467
la viper
Posté le 03-07-2001 à 20:33:12  profilanswer
 

la galere les fonctions callback .. m'en suis servi qu'une seule fois
 
tu trouveras des exemples sur codeguru.com et codeproject.com

n°44468
wpk
Posté le 03-07-2001 à 20:35:08  profilanswer
 

dis lolo, tu serais pas en train de vouloir utiliser les hook sur les evenements genre keyb ou mouse...? :hello:


---------------
"Si ton labeur est dur, et si tes résultats sont minces, rappelle-toi  
n°44471
__Lolo__
C'est pouleversant !
Posté le 03-07-2001 à 20:55:08  profilanswer
 

la viper a écrit a écrit :

la galere les fonctions callback .. m'en suis servi qu'une seule fois
 
tu trouveras des exemples sur codeguru.com et codeproject.com  




qqn qui me comprend !!!!! merci je vais voir ca de suite :jap:  
 
[citation]dis lolo, tu serais pas en train de vouloir utiliser les hook sur les evenements genre keyb ou mouse...? [/citation]
 :hello: wpk
 
 :??: heu... pas du tout :D  
en fait g une dll en C++ qui permet d'écrire des clients pr une certaine appli
moi je fais une dll en C++ (avec une interface C pour pouvoir etre appeler en Delphi) qui l'encapsule  :pt1cable:  
ds ma dll je m'occupe de la récupération de message que les composants delphi devront afficher par exemple. pour ca je souhaitais faire passer a ma fonction de récupération un pointeur sur la fonction d'affichage mais on m'impose un argument HWND pr la fonction de récupération  :fou:  
 
voila j'ai essayé de faire clair, si vous avez d'autres idées, je suis preneur :D


---------------

n°44521
__Lolo__
C'est pouleversant !
Posté le 04-07-2001 à 09:26:56  profilanswer
 

:hot: up :hot:

n°44529
youdontcar​e
Posté le 04-07-2001 à 09:45:27  profilanswer
 

si je comprends bien tu veux faire passer un pointeur sur fonction à une fonction qui prend comme param un HWND ? t'es sûr de t'y prendre correctement ? c'est 100% ton code ou tu es obligé d'utiliser une api ?
 
la syntaxe pour pointeur sur fonction, qq1 l'a donné y'a pas longtemps dans un thread. tu peux t'en servir pour la caster en hwnd (sic), ou si tu as besoin du hwnd, caster une structure qui contient le hwnd et le pointeur (resic).
 
à part ça je vois pas ... faudrait que tu balances qq lignes d'exemple.

n°44533
__Lolo__
C'est pouleversant !
Posté le 04-07-2001 à 09:53:42  profilanswer
 

bah en fait moi je voulais utiliser le pointeur sur fonction
mais je dois utiliser une ancienne API qui utilisait un HWND (c définit où d'ailleurs le HWND ?)

mood
Publicité
Posté le 04-07-2001 à 09:53:42  profilanswer
 

n°44546
seblamb
Posté le 04-07-2001 à 16:01:16  profilanswer
 

La solution :
LONG SetWindowLong(
  HWND hWnd,       // handle of window
  int nIndex,      // offset of value to set
  LONG dwNewLong   // new value
);
 
avec  nIndex = GWL_WNDPROC  
et dwNewLong  = pointeur sur la procedure CallBack  
 
HWND est un type de base de windows, du moment qu'on met windows.h dans un prog il est défini. Sous les os 32bits c'est un entier 32bit mais ça peut varier suivant les platformes, par example sous windows 3.1 c'est un entier sur 16bits. C'est pour cela que l'on definie un type spécial, pour aider à la portabilité


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
n°44551
BENB
100% Lux.
Posté le 04-07-2001 à 16:07:00  profilanswer
 

seblamb a écrit a écrit :

La solution :
LONG SetWindowLong(
  HWND hWnd,       // handle of window
  int nIndex,      // offset of value to set
  LONG dwNewLong   // new value
);
 
avec  nIndex = GWL_WNDPROC  
et dwNewLong  = pointeur sur la procedure CallBack  
 
HWND est un type de base de windows, du moment qu'on met windows.h dans un prog il est défini. Sous les os 32bits c'est un entier 32bit mais ça peut varier suivant les platformes, par example sous windows 3.1 c'est un entier sur 16bits. C'est pour cela que l'on definie un type spécial, pour aider à la portabilité  




Aider a la portabilite et ajouter de la semantique...
un HWND on sait que c'est un fenetre... alors que long... on n sait pas...
C'est pour cela que utiliser un HWND pour passer un ptr de fct ca me choque...

n°44562
seblamb
Posté le 04-07-2001 à 16:24:09  profilanswer
 

A mon avis la fonction remplace CallBack de la fenetre dont tu passes le handle ( HWND) par son propre CallBack grace à la fonction de SetWindowLong.
Elle doit surement sauvegarder ( avec GetWindowsLong() ) l'ancien CallBack de la fenetre et l'appeler après avoir fait ses propres traitements.
C'est quelque chose de courant, ça s'appelle dans l'aide de windows "Subclassing a window".


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
n°44563
__Lolo__
C'est pouleversant !
Posté le 04-07-2001 à 16:24:14  profilanswer
 

rah merci !!! :love:  
je vais voir ca tt de suite

n°44682
__Lolo__
C'est pouleversant !
Posté le 05-07-2001 à 09:20:03  profilanswer
 

je crois que j'ai trouvé !!
les composants delphi ont tous une methode wmmessage qui intercepte WM_UPDATE
donc l'appel a une callback est remplacée par l'envoi d'un message wm_update au handle du composant
 
question : c koi comme type de messages (exception ?, autre ?), ca s'envoit comment en visual c++ ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Visual C++] fonctions Callback

 

Sujets relatifs
[Visual C++] TreeCtrl & CheckBoxes[Visual C++] precision de Sleep
visual studio 6VISUAL INTERDEV / IIS 5 : trouve pas le serveur !!!
[Visual C++ 6] importer une dll ds un projetvisual C++ et SQL-DMO
Problème OCX lorsque j'execute mon prog visual Basic...Visual Basic 6 & windows 2000 = problème !!!!!!!!
[Visual C++] Effacer et écrire dans un fichierVisual Basic 6. ??? des liens pour des cours ?
Plus de sujets relatifs à : [Visual C++] fonctions Callback


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR