Toolbar [Résolu]

Signaler
Messages postés
10
Date d'inscription
vendredi 2 avril 2004
Statut
Membre
Dernière intervention
14 décembre 2004
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Salut a tous,

J'ai un problème qui commence a me gaver...
Je suis en train de programmer une toolbar pour IE (sous Vc++ 6) et j'ai un soucis pour rajouter des boutons:

voici mon code:

TBBUTTON tbb[3];

// buttons with images and text
SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, (LPARAM)TBSTYLE_EX_MIXEDBUTTONS);
SendMessage(m_hWnd, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
SendMessage(m_hWnd, TB_SETMAXTEXTROWS, 200, 0L);

TCHAR* pCaption1 = _T("123");
TCHAR* pCaption2 = _T("456");
TCHAR* pCaption3 = _T("789");
int iIndex1 = ::SendMessage(m_hWnd, TB_ADDSTRING, 0,(LPARAM)pCaption1);
int iIndex2 = ::SendMessage(m_hWnd, TB_ADDSTRING, 0,(LPARAM)pCaption2);
int iIndex3 = ::SendMessage(m_hWnd, TB_ADDSTRING, 0,(LPARAM)pCaption3);

tbb[0].iBitmap = -2;
tbb[0].fsState = TBSTATE_ENABLED; // button status
tbb[0].fsStyle = BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT ; // button style
tbb[0].dwData = 0;
tbb[0].iString = iIndex1;
tbb[0].idCommand=IDM_GETQUOTE; // button identifier

tbb[1].iBitmap = -2;
tbb[1].fsState = TBSTATE_ENABLED; // button status
tbb[1].fsStyle = BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT; // button style
tbb[1].dwData = 0;
tbb[1].iString = iIndex2;
tbb[1].idCommand=IDM_GETQUOTE2; // button identifier

tbb[2].iBitmap = -2;
tbb[2].fsState = TBSTATE_ENABLED; // button status
tbb[2].fsStyle = BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT; // button style
tbb[2].dwData = 0;
tbb[2].iString = iIndex3;
tbb[2].idCommand=IDM_GETQUOTE3; // button identifier

SendMessage(m_hWnd, TB_ADDBUTTONS, (WPARAM)3,(LPARAM)(LPTBBUTTON)&tbb);

Ca fonctionne sauf si dans pCaption1, je met "12345" au lieu de "123", mon troisieme boutons disparait, mais le deuxieme reste.
Si je met "1234567890", là même le deuxieme bouton disparait!!

Si quelqu'un a une idée...

Merci
Greg

8 réponses

Messages postés
10
Date d'inscription
vendredi 2 avril 2004
Statut
Membre
Dernière intervention
14 décembre 2004

J'ai trouvé l'erreur...

En fait mes boutons était tous là, mais il passait a la ligne et comme ma toolbar ne faisait que 22 de haut, je ne les voyait plus.

La toolbar que je créait était crée avec TBSTYLE_WRAPABLE, honte sur moi....
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Moi ya pas de pb en créant comme ca:
m_hWnd = CreateWindowEx(0, TOOLBARCLASSNAME, 0, WS_VISIBLE | WS_CHILD, 0, 0, 0, 0, hWnd, NULL, m_hInstance, NULL);

PS: Si tu utilises ::SendMessage pour modifier ta ToolBar, ca ne sert a rien d'utiliser les MFC (la réciproque est fausse).
Messages postés
10
Date d'inscription
vendredi 2 avril 2004
Statut
Membre
Dernière intervention
14 décembre 2004

Ah bon j'utilise les MFC ?
Je n'ai jamais rien compris à cette guerre MFC/win32....

Je vais alors essayer avec CreateWindowsEx, mais vu mon niveau je n'y crois pas beaucoup...

Merci quand meme et si quelqu'un d'autre à une idée...
Messages postés
10
Date d'inscription
vendredi 2 avril 2004
Statut
Membre
Dernière intervention
14 décembre 2004

D'ailleur ca sert a quoi ce :: avant certaines fonctions ?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Quand je vois m_hWnd et :: devant SendMessage, je me dis que tu utilises les MFC, mais je peux le tromper. Moi j'ai crée avec CreateWindow.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Le :: c'est toi qui l'a mis, c'est a moi de te demander pourquoi...
Ca sert a dire que tu cherches la fonction dans l'espace de noms global. Comme certaines classes MFC redéfinissent SendMessage, on est obligé de mettre ces :: devant pour appeler la "vraie" fonctioon SendMessage.
Messages postés
10
Date d'inscription
vendredi 2 avril 2004
Statut
Membre
Dernière intervention
14 décembre 2004

Ok je comprends.

Si je ne sais pas trop ce que j'ai fait, c'est que j'ai repompé en grande partie le code de la page http://www.codeproject.com/atl/ietoolbartutorial.asp

Si tu dis que c'est du MFC, tu as sans doute raison car il y a au moins une chose que je suis sur c'est de ne pas avoir redéfinis SendMessage.

merci pour tes explications
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Ton logo colle plutot bien avec ta réponse...