2017-10-05 2 views
0

D'abord, je rends ma barre de fonctions CMFCTool permanente avec m_wndMyToolBar.SetPermament (TRUE); // supprime le bouton de fermetureComment rendre un CMFCToolbar flottant non déplaçable

Maintenant, comment puis-je obtenir que l'utilisateur ne peut pas déplacer le CMFCToolbar permanent?

J'ai essayé de sous-classer la CMFCToolbar, mais les ON_WM_MOUSEMOVE & ON_WM_NCMOUSEMOVE ne sont jamais appelés dans cette classe.

Répondre

0

Si vous souhaitez corriger tous toolsbars simplement supprimer

EnableDocking(CBRS_ALIGN_ANY); 

Dans votre classe CMainFrame.

Pour gérer une seule barre, essayez d'écraser FloatControlBar et retourner FAUX.

La finale et le meilleur pour l'empêcher de flotter fr un bar spécial est d'écraser OnBeforeFloat et retourner FAUX. Cette fonction est appelée par FLoatControlBar

La dernière façon de prévenir tout est de capturer WM_NCHITTEST. Poignée et retour HTCLIENT ou éventuellement HTNOWHERE.

+0

C'est la voie inverse. Je ne veux pas que la barre d'outils soit "ancrée" en haut, à gauche, en bas. J'utilise maintenant OnBeforeDock() pour éviter d'ancrer la barre d'outils. Mais la barre d'outils est toujours mobile. –

+0

Ajout d'un aspect supplémentaire pour répondre – xMRi

+0

La gestion de WM_NCHITTEST fonctionne en mode ancré, mais est toujours mobile en mode flottant. :( –