Accueil > Forum > > > > Composant Perso
Composant Perso
dimanche 4 décembre 2005 à 15:05:05 |
Composant Perso

Joky
|
Hey Bonjour les gens ! J'ai un soucis :) Donc voila j'ai créer un composant drButton qui crée un bouton en forme de flêche soit qui se dirige vers la gauche soit vers la droite ! Donc le premier problème que j'ai rencontré, c'est dans WM_PAINT Je voulais récupérer la valeur de la direction ( contenue dans la structure drButton ) Mais voilà pas possible à travers la gestion des gestion ! Donc je suis passé par un message personnel WM_GETDIR WM_USER+1 et voici la macro correspondante #define Draw_Button(hButton, Dir) \ (SendMessage( \ (hButton), \ WM_GETDIR, \ (WPARAM)(DIRECTION)Dir, \ 0L)) Donc dans le message correspondant je récupère la direction avec static int Pos = (DIRECTION)wParam; et ainsi dans WM_PAINT, je peut dessiné en fonction de la direction. Sauf que voilà ça marche pas puisque il reçoit le message WM_PAINT par la suite sans passer par WM_GETDIR Et je ne peut simuler le message car je n'ai pas l'objet correspondant dans ma Procédure de message :) En faite, je voudrais savoir, si il est possible de récupèrer l'objet associer à une Procédure de message :) Voila merci bien :p if(!Meilleur("Joky")) return ERREUR;<
|
|
dimanche 4 décembre 2005 à 15:40:16 |
Re : Composant Perso

vecchio56
|
Réponse acceptée !
C'est quoi la "la gestion des gestion"? J'ai pas compris le but de WM_GETDIR. Même quand tu recois le message, comment retrouves-tu la structure (si tu as plusieurs boutons dans ton application)?
Pour connaitre la direction, tu peux attacher une valeur à ton bouton: SetWindowLong(hbtn, GWL_USERDATA, &drButton); J'imagine que tu vois comment la récupérer Si tu n'aimes pas la méthode, tu peux aussi utiliser un conteneur associatif: map<HWND, int> qui te donnera la direction en fonction du bouton
|
|
dimanche 4 décembre 2005 à 15:47:15 |
Re : Composant Perso

Joky
|
La gestion de gestion c'était la gestion des messages mais écrit en trop vite lol :) Donc je reprend :) J'ai une structure de bouton typedef struct { HWND hButton; HINSTANCE hInst; DIRECTION dirButton; }drButton, *LP_drButton; avec enum DIRECTION { LEFT, RIGHT, }; Et donc dans mon application je créer un bouton vers la gauche et un bouton vers la droite Mais seulement voilà ! aucun moyen de récupèrer la direction dans WM_PAINT Ainsi, j'ai fait le message WM_GETDIR qui fait ça : case WM_GETDIR: MyButt = NewButton(hWnd, (DIRECTION)wParam); SendMessage(hWnd, WM_PAINT, wParam, lParam); return 0; Comme ça j'ai l'objet associé ! mais seulement il ne passe qu'une fois par la donc ça sert à rien lol. Si tu pouvais expliquer un peu plus pour le SetWindowLong parce que j'ai vu dans la source de ymca sur les splitter la même méthode, donc ça m'intéresserai de la comprendre :) TSplitterWnd* pSplitter = NULL; if(uMsg != WM_NCCREATE) pSplitter = (TSplitterWnd*)GetWindowLong(hWnd, 0); else { pSplitter = new TSplitterWnd(hWnd); SetWindowLong(hWnd, 0, (LONG)pSplitter); } Lui c'était avec des classes mais bon voilà :) if(!Meilleur("Joky")) return ERREUR;<
|
|
dimanche 4 décembre 2005 à 16:10:12 |
Re : Composant Perso

vecchio56
|
Réponse acceptée !
Tu connais pas SetWindowLong? Dommage, c'est très utile. Mais laissons la source de ymca de coté si tu veux bien (SetWindowLong set a faire plein de trucs différents). Ta structure ne sert en fait a rien. Avec SetWindowLong, tu associe directement une valeur à un bouton. Par exemple, tu pourrais utiliser ces deux fonction, fournies gratuitement par moi:
void SetButtonDirection(HWND hBtn, DIRECTION d) { SetWindowLong(hBtn, GWL_USERDATA, d); }
DIRECTION GetButtonDirection(HWND hBtn) { return GetWindowLong(hBtn, GWL_USERDATA); }
|
|
dimanche 4 décembre 2005 à 16:15:58 |
Re : Composant Perso

Joky
|
Yo bé tu sais quoi :p Juste quand t'as répondu, bé j'ai réussi lol :) int Pos = MyButt->dirButton; MyButt->hButton = CreateWindow("drButton", 0, WS_VISIBLE | WS_CHILD, 50*Pos+10, 10, 11, 11, hParent, NULL, MyButt->hInst, NULL); SetWindowLong(MyButt->hButton, GWL_USERDATA, Pos); et dans la procédure de message static int pos = GetWindowLong(hWnd, GWL_USERDATA); et ça marche impec :) Merci mille fois :) Et si je connais SetWindowLong, c'était juste le USERDATA, je voyais pas à quoi ça correspondait :) Mille bisous (k) :p if(!Meilleur("Joky")) return ERREUR;<
|
|
lundi 5 décembre 2005 à 10:59:49 |
Re : Composant Perso

magma
|
MyButt == MonCul ...... in english !
|
|
lundi 5 décembre 2005 à 11:09:53 |
Re : Composant Perso

vecchio56
|
Ya toujours des trucs subliminaux dans les sources de Joky...
|
|
lundi 5 décembre 2005 à 18:15:46 |
Re : Composant Perso

Joky
|
Lol mdr J'ai mis 10 Minutes à réfléchir pour comprendre mais voilà lol Donc bé oui MyButton c'était trop long :) J'essairai de me renseigner sur la langue anglaise avant de coder prochain coup :) Au faite, c'était pas BruNews qui disait qu'on programmer avec une 100aine de mots ? :) Comme quoi ! if(!Meilleur("Joky")) return ERREUR;<
|
|
lundi 5 décembre 2005 à 21:08:49 |
Re : Composant Perso

Joky
|
Hé Vecchio j'ai un soucis lol :) Pourquoi quand j'essai de stocker une chaîne dans GWL_USERDATA Bé j'arrive à retrouver la chaîne mais seulement localement, et quand j'essai de récupérer sa valeur autre part, ça marche pas :( Comment ça se fait ? :) BOOL CreateMyLink(LP_drLink MyLink, HWND hParent) { MyLink->hLink = CreateWindow("drLink", MyLink->szLink, WS_VISIBLE | WS_CHILD, 50,30,50, 20, hParent, NULL, MyLink->hInst, NULL); SetWindowLong(MyLink->hLink, GWL_USERDATA, (LONG)MyLink->szLink); MessageBox(0,(char*)GetWindowLong(MyLink->hLink, GWL_USERDATA), 0, 0x40); if(!MyLink->hLink) return FALSE; else return TRUE; } Dans Procédure des messages: case WM_GETVALUE: MessageBox(0,(char*)GetWindowLong(hWnd, GWL_USERDATA), 0, 0x40); return 0; et donc le premier marche et l'autre non :( if(!Meilleur("Joky")) return ERREUR;<
|
|
Cette discussion est classée dans : message, composant, wm, paint, direction
Répondre à ce message
Sujets en rapport avec ce message
message WM_PAINT [ par spiky31 ]
BonjourJe m'excuse si ca semble une question de debutant mais c'est la premiere fois que je dessine dans une fenetre windows :(Je me suis rendu compte
Message WM_NCLBUTTONUP [ par _michel ]
J'ai un problème dans la CallBack de ma fenêtre : je n'arrive pas à receptionner les messages WM_NCLBUTTONUP, qui sont envoyés à chaque fois que le bo
Envoyer un message WM_USER à un service ? [ par spectrobob ]
Comment fait-on pour envoyer un message de type WM_USER d'un exécutable console (MFC) vers un service windows (MFC) donc sans handle de fenêtre ?Merc
comment choper un message WM_KEYDOWN d'une Ccombobox? [ par papipsycho ]
Bonjour comment choper un message WM_KEYDOWN d'une CcomboboxMerci.--==Papi Psycho==--
[keyboard] attente windows message [ par Andejen ]
Bonjour,Je viens de creer une fonction assez simple qui me permet d'effectuer une action des que l'utilisateur tape une touche au clavier. Cependant,
WM_USER [ par mika_33 ]
Bonjour à toute la communauté, Voici mon problème je développe un programme avec builder 4 pour la lecture et l'écriture de caractères sur une liaison
WM_MOUSEWHEEL et XP [ par Pistol_Pete ]
Salut à tous Je cherche à gérer la molette de la souris dans mon application win32. Le message WM_MOUSEWHEEL correspond parfaitement à ce que je veux.
Win32 - Message WM_LBUTTONUP non reçu [ par nico255 ]
Bonsoir, mon programme en C Win32 est en tray-icon et s'inspire fortement de la source CONTROLE-VOLUME-OSD-WIN32 (ID=38949) - une CreateWindowEx WS_
API Windows, gestion de WM_COMMAND [ par coucou_le_minou ]
Bonjour, tout d'abord pardonnez moi si mon message ne correspond pas a la rubrique choisie, j'ai eu quelques soucis a cerner la categorie de mon probl
Reception multiple dans PeeKMessage [ par sephiro ]
BonjourVoici mon probleme:J'envoie un message à un Thread que je viens de créé (pas de probleme) Ptr_Thread=CreateThread(NULL,NULL,Thread_DownLoad,(LP
Livres en rapport
|
Derniers Blogs
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 REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
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
|