IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC] probleme de SendMessage


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    80
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 80
    Par d�faut [MFC] probleme de SendMessage
    Bonjour,
    J'ai cr�� une classe d�rivant d'un CButton et dans ma fen�tre principale, je cr�e une instance de cette nouvelle classe.
    Je veux pouvoir g�rer l'evennement d'un click de la souris sur une instance de ma nouvelle classe; pour cela, j'ai rajout� � la main dans le gestionnaire de message de mon CDialog un ON_BN_CLICKED avec l'ID de l'instance de ma classe et le nom de la fonction � appeler.
    Mon probl�me, c'est que quand je fais un SendMessage depuis ma nouvelle classe, mon CDialog n'intercepte pas le message.
    par exemple, dans mon OnBnClicked de ma nouvelle classe, j'ai mis:
    ::SendMessage(hDlg, BN_CLICKED, 0, m_hWnd) o� hDlg est le handle de mon CDialog. Je ne suis pas s�r de ma fa�on d'envoyer le message donc est ce que c'est correct? et si oui, pourquoi �a ne marche pas? si non, comment je fais?
    Merci d'avance

  2. #2
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    Pq ne pas gerer directement le BN_CLICKED dans ta dialog? Comme ca tu sais directement qu'on a clique sur ton bouton... Non?

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    80
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 80
    Par d�faut
    Non, ce n'est pas possible car je cr�e mon bouton dynamiquement et il a une taille de 0x0 donc, en th�orie, il n'existe pas sur ma CDialog...
    En fait, pour �tre plus pr�cis, je mets � la place du bouton une bitmap que je modifie en fonction de la position du curseur (si il survol l'image par exemple)
    Bref, je fais un bouton personnalis�.
    Je g�re bien le ON_BN_CLICK dans ma CDialog mais comme mon bouton a une taille nulle (�a �vite des bugs d'affichage), je ne clique jamais dessus... D'o� ma n�c�ssit� d'envoyer manuellement un BN_CLICK lorsque le curseur se trouve sur l'image et avec le bouton de la souris enfonc�.

  4. #4
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    je comprends pas tu veux cliquer sur une image c'est pour ca que tu utilise un bouton de taille nulle c'est ca ?

  5. #5
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    Je comprends pas trop mais voici le reponse a ta requete (enfin je pense :-)):
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    SendMessage(hParent,WM_COMMAND, MAKELONG(ID_de_ton_control, BN_CLICKED), (LPARAM)hButton);
    

  6. #6
    Membre �prouv�
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Par d�faut
    Salut

    Utilise plutot PostMessage. Ca ne doit pas marcher avec SendMessage tout simplement parce que ta fenetre principale ne peut pas recevoir le message tant qu'elle est occuppee par la fenetre secondaire.
    Ensuite si ca ne marche toutjours pas essaye plutot d'attrapper ton message avec un ON_MESSAGE (joue le meme role que ON_BN_CLICKED, mais en plus generic).

    J'espere que ca t'aidera

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    80
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 80
    Par d�faut
    c'est vrai que dit comme �a, �a a l'air tres con...
    Je vais donc expliquer comment j'ai proc�d� pour en arriver l�:
    Il existe sur le net une source vachement interressante qui s'appelle BoutonTransparent et qui permet de cr�er des boutons personnali�s avec un masque transparent. Le probl�me c'est que je n'arrivais pas � utiliser cette classe avec un projet MFC. J'ai donc d�cid� de la refaire avec des MFC et en l'am�liorant.
    A l'origine, la classe se "servait" d'un bouton existant pour gerer les messages, je me suis dit que je vais la faire descendre directement d'un CButton sur lequel j'afficherai une image aux dimensions du bouton. Mais il y avait quelques bugs d'affichage lorsque par exemple je cliquais dessus, on voyait un bref instant le bouton au lieu de l'image et �a m'embetait... J'ai donc d�cid� de mettre le bouton � la taille nulle et l'image � sa taille originale et donc, j'en suis arriv� l� o� j'en suis.

  8. #8
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    Ton boutons tu peux lui attribuer un CBitmapButton.... et la on voit que l'image...

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    80
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 80
    Par d�faut
    il me semble que le CbitmapButton n'affiche pas une image mais met une image dans le bouton; de plus, comme j'ai du mal � comprendre ce que j'ai fait pour avoir la transparence de mon image, je m'imagine pas le refaire...
    Sinon, bien que ta ligne de code soit dure � voir, pitch21, elle m'a permi de r�ussir � faire ce que je voulais faire donc merci � tous

  10. #10
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055

Discussions similaires

  1. R�ponses: 4
    Dernier message: 02/06/2005, 13h08
  2. [MFC] probleme d'affichage en mode explorer
    Par ryu20 dans le forum MFC
    R�ponses: 2
    Dernier message: 11/02/2005, 20h33
  3. [MFC] Probleme d'actualisation d'une listbox
    Par Robleplongeur dans le forum MFC
    R�ponses: 5
    Dernier message: 13/05/2004, 14h15
  4. [MFC ]Probleme de linkage d'une dll
    Par Lysis dans le forum MFC
    R�ponses: 9
    Dernier message: 22/01/2004, 14h51
  5. [MFC] probleme de rafraichissement d'une image
    Par Vestaproman dans le forum MFC
    R�ponses: 6
    Dernier message: 09/01/2004, 23h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo