Problème API SendMessage

[Résolu]
Signaler
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
Bonjour à tous, j'ai un problème avec l'api SendMessage de la Lib user32.

Au fait j'esaie de l'utiliser pour faire un déroulement automatique d'une comobox une fois que le focus se trouve dessus.

Voici ce que j'ai comme code :



'----------------------------------------------------------------------------------------
'Déclaration de l'API qui va permettre d'ouvrir une Combox quand il a le Focus
'=============================================================================
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                                    (ByVal hMenu As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const CB_SHOWDROPDOWN = &H14F

Public Sub PROCEDURE_DEROULEMENT_COMBOBOX(handle As Long)

On Error GoTo erreur 'Gestion des erreurs

SendMessage handle, CB_SHOWDROPDOWN, True, ByVal 0

Exit Sub
erreur:
    Call fct_journal_erreurs(Err.Number, Err.description, "problème dans la Procédure PROCEDURE_DEROULEMENT_COMBOBOX du Module mod_gestionnaire")
   
End Sub

Voilà, donc mon problème c'est lorsque je fais appel à cette procédure, je ne sais pas ou je dois la mettre !!!

Ou alors c'est peut être mon code qui n'est pas bon !!!! Oui bien si vous avez une autre solution...

Merci énormément de votre aide

Gilles

6 réponses

Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Merci Exploreur mais dans cette source j'ai pas trouvé ma solution mais par contre je viens de la trouver tout seul comme un grand lol

Au fait lorsque j'appel ma procédure je dois le faire dans l'évènement GotFocus de ma ComboBox et de cette façon-ci :

PROCEDURE_DEROULEMENT_COMBOBOX combo1.hwnd

Et cela fonctionne à merveille....

Merci encore et bonne soirée

Gilles
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Peut-être une réponse  ICI 

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonsoir,
s' il s' agit juste de dérouler la liste comme si tu cliquais sur le bouton-flèche du combo, il y' a plus simple et pas besoin de l' Api SendMessage :

Combo1.SetFocus
SendKeys "{f4}"

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
pas joli, de piloter a base de SendKeys...
SetFocus doit toujours etre sous le coup d'une gestion d'erreurs, on ne sais jamais (plante si controle non pret)

pour conclure, F4 bascule l'etat (masqué ou non) de la liste... elle ne garantie pas de la montrer ou de la cacher...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Bien vu RendField c'est pour ça que j'ai opté pour l'Api SendMessage et puis c'est super pratique et ne charge pas trop...
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonjour,
cette "astuce" marche sans problème dans le cas
l' on veut juste voir la liste déroulante pour effectuer un choix.
Au départ le Combo est invisible .


Sub QuelconqueControl_Click()
  Combo1.Visible=True
  Combo1.SetFocus
  'ou SendKeys "{tab}" si l' index des deux controls se suivent
  'du coup le focus passe au combo


  SendKeys "{f4}" '==>le combo se déroule
  Combo1.ListIndex=0
EndSub


Sub Combo1_Click
  QuelconqueControl.Text=Combo1.Text
  Combo1.Visible=False
End Sub


Combo1.Visible=False peut être aussi mis dans Combo1_LostFocus


Exemples de QuelconqueControl : FlexGrid, DataGrid, DbGrid, ,.etc
Pour ces quelques exemples de control, le combo est en premier plan.
Pour un TextBox , le combo est en arrière plan.ainsi la partie Texte du combo est masquée.

Le coup du TextBox je l' utilise assez souvent en l' associant à une petite image sur le coté pour simuler la flèche.











<hr />

I LIKE TO BE HERE WHEN I CAN


<hr />