Toolbar

Résolu
GregPeck Messages postés 10 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 14 décembre 2004 - 17 sept. 2004 à 23:56
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 19 sept. 2004 à 17:11
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
A voir également:

8 réponses

GregPeck Messages postés 10 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 14 décembre 2004
19 sept. 2004 à 16:33
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....
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 sept. 2004 à 00:39
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).
0
GregPeck Messages postés 10 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 14 décembre 2004
18 sept. 2004 à 00:54
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...
0
GregPeck Messages postés 10 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 14 décembre 2004
18 sept. 2004 à 00:56
D'ailleur ca sert a quoi ce :: avant certaines fonctions ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 sept. 2004 à 00:56
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.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 sept. 2004 à 00:59
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.
0
GregPeck Messages postés 10 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 14 décembre 2004
18 sept. 2004 à 01:12
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 sept. 2004 à 17:11
Ton logo colle plutot bien avec ta réponse...
0
Rejoignez-nous