Problème avec une toolbar

Toutoun13 Messages postés 65 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 26 mars 2007 - 10 nov. 2005 à 10:01
Toutoun13 Messages postés 65 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 26 mars 2007 - 10 nov. 2005 à 11:54
Bonjour,
J'ai crée dans mon appli une 2eme toolbar (pour le format du texte). Comme dans une appli normale, si je double clique sur la toolbar elle se detache de la zone reservée pour les toolbar, je peux alors la deplacer et la fermer. Si je la ferme, je n'arrive plus à l'afficher de nouveau.
Rq. J'ai ajouter dans le menu "affichage" un item "FormatBar" qui affiche ou pas la toolbar ("m_wndFormatBar.ShowWindow(SW_SHOW)" ou "m_wndFormatBar.ShowWindow(SW_HIDE)"). Ce mecanisme fonctionne tant que je n'ai pas fermé la toolbar.

Je cherche donc un moyen pour faire apparaitre de nouveau cette toolbar apres sa fermeture.
Merci d'avance.

9 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 nov. 2005 à 10:57
Sans doute que fermer ne fait pas que cacher la toolbar mais la détruit aussi (tu peux le vérifier avec IsWindow(m_wndFormatBar.m_hWnd)
Dans ce cas, tu devra recréer la fenêtre
L'autre solution (mieux) c'est d'intercepter le WM_CLOSE ou WM_DESTROY et de faire un ShowWindow(SW_HIDE), comme ca la fenêtre n'est pas détruite
0
Toutoun13 Messages postés 65 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 26 mars 2007
10 nov. 2005 à 11:03
Lorsque je ferme la toolbar elle n'est pas detruite, quand je tente de faire apparaitre ma toolbar, je rentre dans la fonction suivante et tout les tests passent.

void CMainFrame::DisplayFormatBar()
{
if ((m_wndFormatBar.GetSafeHwnd() != NULL))
{
if (!m_wndFormatBar.IsWindowVisible())
m_wndFormatBar.ShowWindow(SW_SHOWNORMAL);
}
}
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 nov. 2005 à 11:10
Alors tu choisis sa taille et sa position avec SetWindowPos
0
Toutoun13 Messages postés 65 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 26 mars 2007
10 nov. 2005 à 11:15
J'ai essayé, mais j'ai pas reussi. J'ai un peu de mal avec les arguments, surtout le 1er (const CWnd* pWndInsertAfter). Du coup mon 2eme soucis c'est que j' n'arrive pas à intercepter l'evenement lorsque je ferme la toolbar.
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
10 nov. 2005 à 11:21
Je crois que le sous-classement n'est pas vigueur en MFC... Si je me souviens bien, tu crois créer une sous-classe de CToolBar, après tu dois savoir comment faire
0
Toutoun13 Messages postés 65 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 26 mars 2007
10 nov. 2005 à 11:24
Qu'est ce que tu sous-entend pas sous-classement ?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 nov. 2005 à 11:29
Ca veut dire changer le WndProc de la fenêtre. Comme tu codes en MFC ca ne te dit peut être rien
Exemple: http://www.cppfrance.com/code.aspx?ID=10568
0
Toutoun13 Messages postés 65 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 26 mars 2007
10 nov. 2005 à 11:38
Ca m'a l'air bien compliqué pour une simple toolbar. Doit bien y avoir une solution, ca fonctionne pour la toolbar "normale".
0
Toutoun13 Messages postés 65 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 26 mars 2007
10 nov. 2005 à 11:54
Le code suivant resoud le problème. Reste juste à replacer er redimensionner la toolbar.
if(m_wndToolBar.m_hWnd != NULL)
{
if(m_wndToolBar.LoadToolBar(IDR_TOOLBAR_ID))
{
DockControlBar(&m_wndToolBar);
m_wndToolBar.ShowWindow(SW_SHOW);
}
}

Merci.
0
Rejoignez-nous