Bonjour à tous !
Je suis en train de migrer une application de VS06 à VS2012, et j'en suis au remplacement des CToolbar par des CMFCToolbar. Je rencontre ici un problème : Le bouton intégré à la Toolbar ne fonctionne pas (il se grise quand on clic dessus, puis se dégrise lorsqu'on repasse le curseur vers l'élément ciblé (ce bouton permet d'ouvrir une bibliothèque suivant l'élément sélectionné dans la page)).
Je précise que l'on est sur une page (que je nomme Page.cpp pour cet exemple) qui hérite de la classe CDialog.

Voilà le code qui pourrait être utile :

Page.cpp : OnInitDialog() :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CDialog::OnInitDialog();
 
	///////Construction CMFCToolbar
 
	if (!_toolBarTabComp.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP, CRect(1,1,1,1), IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar add item\n");
		return -1;      // fail to create
	}
	VERIFY(_toolBarTabComp.LoadBitmap(IDR_TOOLBAR_TAB_PROP_COMP));
	_toolBarTabComp.InsertButton(CMFCToolBarButton(ID_BIBLI_COMP, 0));
	CSize   sizeToolBar = _toolBarTabComp.CalcFixedLayout( FALSE, TRUE );
        _toolBarTabComp.SetWindowPos( NULL, 0, 0, sizeToolBar.cx, sizeToolBar.cy,SWP_NOACTIVATE | SWP_NOZORDER );
 
	_toolBarTabComp.SetPaneStyle(_toolBarTabComp.GetPaneStyle() &
	CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_GRIPPER | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT);
        // ......
Page.cpp : gestion des événements :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
BEGIN_MESSAGE_MAP(CPage, CDialog)
	//{{AFX_MSG_MAP(CPropertyComplement)
	ON_WM_CREATE()
	ON_MESSAGE(ID_MESSAGE_CHANGEDATE, OnAfterEditGrilleMSG)
	ON_WM_SIZE()
	ON_COMMAND(ID_BIBLI_COMP, OnClick)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

Page.h :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
// ........
        protected:
	// Generated message map functions
	//{{AFX_MSG(CPage)
        //.......
	afx_msg void OnClick();
	DECLARE_EVENTSINK_MAP()
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
 
};
Je peux aussi poster le fichier .rc de la boite de dialogue, et une partie du fichier .h du projet, mais je ne suis pas sure que se soit nécessaire !
Sinon j'ai essayé de créer une toolbar de la même manière sur un projet vide, et le bouton fonctionne... J'ai aussi insérer un point d'arrêt dans la fonction "OnClick()" qui est sensée être appelée quand on actionne le bouton, ce qui prouve que le problème ne vient pas de cette fonction : le programme n'y passe même pas ..

Je vous remercie d'avance de votre aide !

Sleepy