Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1863 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Visual C++] Clist : afficher le nom complet d'un élément

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Visual C++] Clist : afficher le nom complet d'un élément

n°264342
warp
Posté le 07-12-2002 à 13:52:08  profilanswer
 

J'ai une liste d'élément (ComboBox),
mais certains éléments sont plus longs que la taille horizontale de la ComboBox.
 
Dans certaines applications, lorsque on ne voit pas la totalité du texte, celui-ci apparaît lorsqu'on laisse la souris quelques temps sur le texte.
Je n'arrive pas à trouver d'exemple, mais j'éspère avoir été suffisament précis.
 
Donc ma question : comment faire celà avec Visual C++ ?
 
Merci.


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
mood
Publicité
Posté le 07-12-2002 à 13:52:08  profilanswer
 

n°264443
VisualC++
J'va y penser ...
Posté le 07-12-2002 à 18:33:00  profilanswer
 

Fait une classe CCombo derive de la MFC
apres ca donne ca niveau code (on peu faire plus compliquer, la le ttoltip affiche la string selectionne a hauteur de 80 char max)
 

Code :
  1. le header
  2. class CMyCombo : public CComboBox
  3. {
  4. public:
  5.   CMyCombo();
  6. virtual  ~CMyCombo();
  7. private:
  8. CString  m_csTempText;
  9. public:
  10. //{{AFX_VIRTUAL(CMyCombo)
  11. //}}AFX_VIRTUAL
  12. virtual int OnToolHitTest( CPoint point, TOOLINFO* pTI ) const;
  13. BOOL OnToolTipText( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  14. protected:
  15. //{{AFX_MSG(CMyCombo)
  16. //}}AFX_MSG
  17. DECLARE_MESSAGE_MAP()
  18. };
  19. Et le cpp
  20. CMyCombo::CMyCombo()
  21. {
  22. m_csTempText = _T("" );
  23. EnableToolTips();
  24. }
  25. CMyCombo::~CMyCombo()
  26. {
  27. }
  28. BEGIN_MESSAGE_MAP(CMyCombo, CComboBox)
  29. //{{AFX_MSG_MAP(CMyCombo)
  30. //}}AFX_MSG_MAP
  31. ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
  32. ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
  33. END_MESSAGE_MAP()
  34. int CMyCombo::OnToolHitTest( CPoint point, TOOLINFO* pTI ) const
  35. {
  36. pTI->hwnd = m_hWnd;
  37. pTI->uId = ( UINT )1; // 1 le tooltip est trouve
  38. pTI->lpszText = LPSTR_TEXTCALLBACK; // il notify l'affichage via TTN_NEEDTEXTW/A
  39. CRect rc;
  40. GetWindowRect( &rc );
  41. ScreenToClient( &rc );
  42. pTI->rect = rc;
  43. return pTI->uId;
  44. }
  45. BOOL CMyCombo::OnToolTipText( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  46. {
  47. // ANSI et UNICODE du message
  48. TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
  49. TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
  50. UINT nID = pNMHDR->idFrom;
  51. if( nID == 0 )     // Notification par defaut on la traite pas
  52.  return FALSE;
  53. int iSel = GetCurSel();
  54. if (iSel == CB_ERR) {
  55.  m_csTempText = _T("" );
  56. }
  57. else {
  58.  GetLBText(iSel, (CString&)m_csTempText);
  59. }
  60. #ifndef _UNICODE
  61. if (pNMHDR->code == TTN_NEEDTEXTA)
  62.  lstrcpyn(pTTTA->szText, m_csTempText, 80);
  63. else
  64.  _mbstowcsz(pTTTW->szText, m_csTempText, 80);
  65. #else
  66. if (pNMHDR->code == TTN_NEEDTEXTA)
  67.  _wcstombsz(pTTTA->szText, m_csTempText, 80);
  68. else
  69.  lstrcpyn(pTTTW->szText, m_csTempText, 80);
  70. #endif
  71. *pResult = 0;
  72. return TRUE;
  73. }


 
Et et tu utilises CMyCombo a la place des CComboBox
 
Tu peux virer le code ANSI/UNICODE au cas ou


---------------
VT ... Vaucluse / Vrille(euse :sarcastic: ) c'est pareil tant qu'il y a l'humour :D

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Visual C++] Clist : afficher le nom complet d'un élément

 

Sujets relatifs
Afficher images d'un dossier...[DELPHI] comment connaitre le nombre d'élément dans une...
visual studio 6[Visual C++ MFC] Faire correspondre deux classes ?
Récupérer l'élément d'un ComboboxAfficher des images format Jpeg-in-tiff via JAI
Comment afficher une image dans un RichEdit ?Y'a t-il des personnes qui utilisent Visual Adélia ici ???
[PHP] Afficher une citation chaque jourConnection aux bases de donnees (ADO, DAO) en Visual Basic.
Plus de sujets relatifs à : [Visual C++] Clist : afficher le nom complet d'un élément


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR