2008-10-17 16 views
0

J'ai un SDI que je charge Excel en utilisant OLE. Je veux ajouter une barre d'outils à ce que je peux utiliser pour avoir un bouton "import" très important et évident (et quelques autres). Les barres d'outils que j'ajoute à travers MFC sont toutes masquées ou autrement supprimées de l'interface lorsque Excel devient actif. Y at-il un moyen de garder une barre d'outils et sur l'interface lorsque l'élément Excel Ole devient actif?Client OLE dans SDI. Comment ajouter une barre d'outils?

J'ai essayé d'appeler le FloatControlBar après l'initialisation de l'élément Excel OLE, mais cela n'a eu aucun effet. J'ai pensé à tordre le menu (qui reste et se comporte normalement) dans une barre d'outils, mais il aurait besoin d'être ancré sur le côté gauche (exigence) et avoir une grande représentation graphique visible pour la commande ... et je n'ai pas trouvé un moyen de le faire. CMenu classe permet des éléments de menu graphique, mais je n'ai pas trouvé un moyen de faire beaucoup avec la commande de menu elle-même (autre que d'obtenir son commandid dans la table des messages).

Répondre

1

Bien que je ne suis pas grand sur MFC, j'ai un peu d'expérience sur l'interaction avec les applications de bureau Microsoft via COM/OLE. Je pense que si je vous comprends bien, vous chargez un document Excel dans votre application et affichez dans une fenêtre OLE? Les menus et les boutons Excel sont affichés dans votre application? Si c'est le cas, la façon la plus simple d'ajouter un bouton à la barre d'outils est de l'ajouter dans Excel par un template chargé au démarrage. Cela peut contenir votre bouton, puis exécutez un petit peu de code VBA qui appelle dans votre code. Il peut même être possible d'appeler votre élément de menu que vous avez créé via MFC. L'un des problèmes de l'automatisation via OLE est que, même s'il est incroyablement puissant, certaines restrictions semblent entrer en jeu une fois qu'Excel réalise qu'il fonctionne dans une fenêtre OLE plutôt que nativement. Cela peut vous empêcher de créer les boutons et de les montrer dans votre fenêtre ole.

Espérons que cela soit utile.

+0

Merci pour vos conseils. J'espérais rendre le bouton externe à la partie de la fenêtre Excel, car cela fait partie de mes besoins en interface (remis à moi). Je peux charger mon propre menu, et l'utiliser (sans popup) comme une barre d'outils, mais ce n'est pas assez important .. facile à ne pas voir. – Steve