SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013
-
29 août 2006 à 18:47
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013
-
30 août 2006 à 06:51
ReBonjour je sais pas ce qui se passe en ce moment mais depuis que je me suis mit aux classes je bloque toute les deux lignes, j'ai du sauter un trop gros paragraphe.
class MyBoutton
{
public:
MyBoutton();
bool state;
int style;
WNDPROC ancienproc;
int deco;
Pourquoi je me retrouve avec le message "error C2440: 'type cast' : cannot convert from 'LRESULT (__stdcall MyBoutton::* )(HWND,UINT,WPARAM,LPARAM)' to 'long'" alors que sans passer par les classes ca marche a chaque fois.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201013 29 août 2006 à 19:50
Tu dois ajouter ceci dans le cpp:
WNDPROC MyBoutton::ancienproc;
C'est logique qu'une méthode non statique ne peut pas faire l'affaire car elle a besoin d'un objet pour être appelée, contrairement à une méthode statique
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 29 août 2006 à 19:39
Je l'ai mit dans le headers pas dans le cpp( sinon pas de compil).
J'ai du aussi mettre static WNDPROC ancienproc;
Ca compile mais lors du link
error LNK2001: unresolved external symbol "public: static long (__stdcall* MyBoutton::ancienproc)(struct HWND__ *,unsigned int,unsigned int,long)" (?ancienproc@MyBoutton@@2P6GJPAUHWND__@@IIJ@ZA)
Meme si dans le header je met ma fonction en private (toujour le message "unresolved external symbol "public: .....")
La franchement je comprend plus rien, pourquoi ces statics ?
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 29 août 2006 à 20:00
Trop tard j'avait deja posté mais maintenant ca marche (enfin ca deconne a fond mais ca compile et ca linke) la je vais essayer de comprendre ce que j'ai fait car j'ai pas encore tout saisi, j'ai peur que ca deconne encore au niveau de ancienproc.
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 29 août 2006 à 20:11
En fait c'etait bien ca.
Vu que ancienproc est maintenant statique, je n'en ai plus qu'un dans mon appli, y a pas moyen d'acceder au valeur de ma classe.
C'est impossible avec les classes ? En fait je cherche a sous-classer en evitant de faire passer un pointeur dans GWL_USERDATA et je croyais ca possible avec les classes.
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 29 août 2006 à 21:23
Ben en fait c'est justement ce que je cherche a eviter en fait le projet final sera une librairie. Je l'ai deja fini sous la forme d'une dll pour une application (mIRC) et ce systeme de sous-classement pose probleme car 95/100 des dlls utilise cette technique et donc impossible d'en utliser 2 a la fois ( si GWL_USERDATA est utilisé par une dll c'est impossible a l'autre d'en faire autant).
Ya aussi la technique d'une liste chainées qui les memorise toute mais je pensais la refaire avec les classes.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 29 août 2006 à 21:33
Salut,
Tu peux aussi utiliser SetProp() et GetProp().
C'est moins rapide que GetWindowLong(), mais c'est pratique car tu
pourra associer plusieurs pointeurs à une même fenêtre. Pour rentre
GetProp() un peu plus rapide, on peut aussi utiliser les atoms (msdn). <name></name><link href="../../../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}