Accueil > Forum > > > > Mélange entre C++ et Win32
Mélange entre C++ et Win32
vendredi 20 août 2004 à 20:26:07 |
Mélange entre C++ et Win32

vecchio56
|
J'ai décidé d'encapsuler mes fenêtres dans des classes, mais je me trouve confronté à un problème: en gros je n'arrive pas à changer de WndProc en utilisant une fonction qui fait partie de la classe. Voici un code qui n'a pas de sens mais qui illustre ce probleme: #include <windows.h>
class c { LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void f(); };
LRESULT CALLBACK c::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { return DefWindowProc(hWnd, uMsg, wParam, lParam); }
LRESULT CALLBACK WndProc2(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { return DefWindowProc(hWnd, uMsg, wParam, lParam); }
void c::f() { HWND hWnd; WNDPROC NewProc = (WNDPROC)(LONG_PTR)SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG)(LONG_PTR)WndProc2); // OK NewProc = (WNDPROC)(LONG_PTR)SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG)(LONG_PTR)WndProc); //Mache pas }
int main (int argc, char **argv) { return 0; }
|
|
|
vendredi 20 août 2004 à 21:29:49 |
Re : Mélange entre C++ et Win32

djl
|
ca compile et ca marche pas ?
|
|
vendredi 20 août 2004 à 21:36:37 |
Re : Mélange entre C++ et Win32
|
vendredi 20 août 2004 à 21:39:50 |
Re : Mélange entre C++ et Win32

djl
|
il te fais chier avec le WndProc en parametre ? peut etre un cast explicite ?
|
|
vendredi 20 août 2004 à 21:40:31 |
Re : Mélange entre C++ et Win32

BruNews
|
Réponse acceptée !
windProc doit etre declaree 'static' dans une classe pour que son adresse soit connue a la compilation, serait pas ça ton prob ?
ciao... BruNews, Admin CS, MVP Visual C++
|
|
vendredi 20 août 2004 à 21:42:25 |
Re : Mélange entre C++ et Win32

djl
|
tout a fais, j'avais meme pas vu, bien joué
|
|
vendredi 20 août 2004 à 21:49:38 |
Re : Mélange entre C++ et Win32

vecchio56
|
Bravo, mais ca ne m'arrange pas de mettre la fonction en static
|
|
vendredi 20 août 2004 à 21:51:08 |
Re : Mélange entre C++ et Win32

djl
|
pourquoi, tu voudrais t'en servir comment ?
|
|
vendredi 20 août 2004 à 22:42:59 |
Re : Mélange entre C++ et Win32

jpthomasset
|
Salut, Si tu veux profiter des avantages des classes pour cette fonction, il faut noter une chose : En c++, quand tu appele une fonction d'une classe, elle prend en premier parametre le fameux pointeur 'this', ce qui permet lors de l'execution de savoir dans quelle instance la fonction est executé. Ce parametre est entierement géré par le compilateur, mais il faut savoir qu'il existe. Par contre en déclarant ta fonction en static, alors ce pointeur n'existe pas puisque la fonction n'est pas éxécuté dans le contexte d'une instance de classe, mais un peu comme une fonction C classique. Bon, pou résoudre ton problème, c'est assez simple il suffit de creer une fonction WindowProc Statique qui s'occupera de retrouver l'instance de la classe a laquelle correspond ta fenetre et appelera le traitement souhaité. Pour retrouver l'instance de ta classe, il suffit de placer le pointeur de cette classe dans le USER_DATA de la fenetre. Bon l'explication commence a etre longue... regarde plutot ce lien qui est beaucoup plus clair : WindowProc As Class methodA ta place, je jetterais un oeil sur les MFC ou wxWindows, ca t'eviteras de refaire ce que qq'un a déjà fait  A+, JP.
|
|
Cette discussion est classée dans : long, hwnd, wparam, wndproc, lparam
Répondre à ce message
Sujets en rapport avec ce message
c++ API Windows : sous classement de fenetre dans une classe [ par _Jonathan ]
Bonjour, je cherche à créer un controle de type Edit en utilisant une classe. Le probleme, c'est que je souhaite redéfinir la procedure callback du co
Win32 problème. [ par TeniX ]
Salut, Voila j'ai crée de maniere simple une source qui exprime mon problème , je trouve pas la source du problème , enfaite quand les fenêtres sont l
Sous classement foireux [ par HeavenForsaker ]
Mon sous classement n'a pas l'air de fonctionner correctement, je voudrais receptionner le message WM_MOVING lors du déplacement de ma fenêtre. Voila
PROBLEME DE CHARGEMENT JPEG DANS UN ECRAN DE VEILLE [ par Batman60 ]
bonjourclic droit sur l'exe et puis "tester" le prog fonctionne à merveille mais une fois installé à l'execution de l'ecran de veille les textures jpe
pb avec iwebbrowser2 C++ API Win 32 [ par spyto ]
Bonjour,Je tourne en rond, je ne vois pas où ça buggue !!!Voilà, j'ai développé un truc en Win32 pur (j'utilise MSVS.NET C++ 2003)J'ai emprunté une so
SubClassing et classes [ par SnOOpss ]
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
Combox me bloquant l'appli [ par SnOOpss ]
Bonjour j'ai essayé de simplifier au maximum mon code mais meme codé comme cela j'ai le meme probleme. Tant que je clique par sur le comboBox tout est
Boite de dialogue [ par bioopovega ]
Bonjour,J'ai un petit probleme, quand je créer une boite de dialogue dans le fichier main.cpp, je n'est pas d'erreur, mais quand je veux inclure la cr
Problème sous-classement [ par Albanderuaz ]
Bonjour !J'ai un petit problème avec ce code qui est censé, grâce à un sous-classement, modifier le texte de tous les boutons grâce à un hook global.
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|