Désolé cette réponse n'est pas parfaite, mais avec l'âge de la question et combien de personnes sont intéressées, je pensais que je prendrais une photo et j'espère aider quelqu'un si ce n'est l'OP
Je ne sais pas comment VML/Word gère les données du presse-papiers. Ces formats multiples dans le Presse-papiers Windows, l'un avec le HTML que vous voulez, et l'autre avec le format VML, alors vous avez de la chance et cela devrait fonctionner. Si non, alors peut-être que vous pourriez utiliser cela pour nettoyer le code sur insérer au moins. Vous aurez besoin de IDocHostUIHandler::TranslateAccelerator. Vous devez implémenter IDocHostUIHandler si vous ne l'avez pas déjà fait. Vous utilisez ICustomDoc::SetUIHandler pour l'enregistrer, après que le document HTML est chargé (peut être une page vide si vous l'utilisez).
À l'intérieur TranslateAccelerator vous devez regarder nCmdID == IDM_PASTE
. Ceci est déclenché avant que l'utilisateur ne colle quelque chose au contrôle HTML, et vous pouvez modifier le contenu du presse-papiers avant que le collage ne se produise.
Vous pouvez utiliser quelque chose comme GetClipboardData (RegisterClipboardFormat ("Format HTML")), pour obtenir le format HTML à partir du presse-papiers. Vous pouvez utiliser SetClipboardData pour remplacer les données du Presse-papiers. Pour votre utilisation, si vous voyez qu'il existe plusieurs formats de Presse-papiers après avoir copié à partir de Word, vous pouvez simplement supprimer l'un des formats, celui que vous ne voulez pas. De cette façon, lorsque le contrôle HTML termine le collage, il utilisera uniquement le format que vous voulez.
J'ai des exemples de code si nécessaire, mais ils font partie d'un grand projet et utilisent la bibliothèque VCL de Borland pour certaines parties. Mon code vérifie le format CF_BITMAP dans le Presse-papiers et convertit au format HTML en utilisant un fichier PNG à la place. Pour que les utilisateurs qui collez une capture d'écran sur le contrôle obtiennent une image PNG plus petite au lieu d'un fichier BMP énorme. Le concept est à peu près le même que ce que vous voulez.
Je suppose que l'alternative serait d'accepter que cela crée VML, mais l'exécuter à travers un outil de conversion VML-> SVG après (par exemple http://sourceforge.net/ projets/vectorconverter /) – Spudley