none
plugin Outlook ATL C++, onglet ne s'ajoute pas dans le menu d'outlook RRS feed

  • Question

  • Bonjour,

    j'ai essayé avec pleins de variantes pour le xml et je n'arrive pas à ajouter un onglet (un tab) dans le menu d'outlook.voici une de mes variantes de xml:

    <?xml version="1.0" encoding="utf-8"?>
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
     <ribbon>
       <tabs>
         <tab id="CustomTab" label="Plugin" insertAfterMso="TabView">
          <group id="CustomGroup" label="Plugin" visible="true">
             <button id="CustomButton" imageMso="HappyFace" size="large" label="Plugin" visible="true"/>
           </group> 
          </tab>
        </tabs> 
      </ribbon> 
    </customUI> 

    aucun nouvel onglet n'est ajouté,j'ai essayé aussi sans insertAfterMSo et avec image=IDB_PNG1 au lieu de imageMSO pour le bouton.j'utilise dans GetCustomUI une fonction getxmlresource qui charge la ressource xml.

    je n'ai pas encore implemente le handler qui gere le clic sur mon bouton mais je pense que l'onglet devrait s'afficher quand meme et rien ne s'affiche.pourtant j'avais un onglet pour un plugin gpgol qui s'affichait dans outlook(car j'ai installe gnugpg) mais je l'ai desactivé.que faut il faire de plus pour afficher un onglet et un bouton dans outlook?

    mon but est ensuite quand ca s'affichera, d'afficher un petit menu vertical quand on clique sur le bouton de l'onglet.

    c'est outlook 2013 (livré avec office 365)




    vendredi 26 juin 2015 09:43

Réponses

  • en fait le probleme est resolu, apparemment il fallait definir et ajouter l'interface iribboncallback et la fonction onbuttonclick car j'avais un bouton dans mon onglet.et il n'y a pas besoin de faire un fichier xml.bin.

    • Modifié stephane_l2 vendredi 17 juillet 2015 12:57
    • Marqué comme réponse stephane_l2 vendredi 17 juillet 2015 12:57
    vendredi 17 juillet 2015 12:56

Toutes les réponses

  • dans GetCustomUI je fais:

    si ribbonID est egal à "Microsoft.Outlook.Explorer" alors

    { *RibbonXml = GetXMLResource(IDR_XML1); return (*RibbonXml ? S_OK : E_OUTOFMEMORY); }

    return S_OK;

    et mes deux fonctions correspondantes à GetXmlResource sont :

    HRESULT HrGetResource(int nId, LPCTSTR lpType, LPVOID* ppvResourceData, DWORD* pdwSizeInBytes)
    {
    		HMODULE hModule = _AtlBaseModule.GetModuleInstance();
    		if (!hModule)
    			return E_UNEXPECTED;
    		HRSRC hRsrc = FindResource(hModule, MAKEINTRESOURCE(nId), lpType);
    		if (!hRsrc)
    			return HRESULT_FROM_WIN32(GetLastError());
    		HGLOBAL hGlobal = LoadResource(hModule, hRsrc);
    		if (!hGlobal)
    			return HRESULT_FROM_WIN32(GetLastError());
    		*pdwSizeInBytes = SizeofResource(hModule, hRsrc);
    		*ppvResourceData = LockResource(hGlobal);
    		return S_OK;
    };
    
    BSTR GetXMLResource(int nId)
    {
    		LPVOID pResourceData = NULL;
    		DWORD dwSizeInBytes = 0;
    		HRESULT hr = HrGetResource(nId, TEXT("XML"),
    			&pResourceData, &dwSizeInBytes);
    		if (FAILED(hr))
    			return NULL;
    		// Assumes that the data is not stored in Unicode.
    		CComBSTR cbstr(dwSizeInBytes, reinterpret_cast<LPCSTR>(pResourceData));
    		return cbstr.Detach();
    };

    voila.

    l'onglet et le bouton n'apparaissent pas dans le menu outlook.


    vendredi 26 juin 2015 10:13
  • Apparemment dans l'exemple que j'ai recupere du site de microsoft ils n'utilisent pas un fichier xml tel quel comme moi mais un fichier xmln.bin transformé.

    dans mon projet apparait justement un fichier xml2.bin mais qui n'existe pas.je ne sais pas comment le generer a partir de mon fichier .xml.c'est peut etre de là que vient mon probleme en fait.....

    vendredi 26 juin 2015 14:45
  • j'ai finalement reussi à faire un fichier de type xml.bin mais l'onglet et le bouton n'apparaissent toujours pas dans outlook.
    lundi 29 juin 2015 07:15
  • en fait le probleme est resolu, apparemment il fallait definir et ajouter l'interface iribboncallback et la fonction onbuttonclick car j'avais un bouton dans mon onglet.et il n'y a pas besoin de faire un fichier xml.bin.

    • Modifié stephane_l2 vendredi 17 juillet 2015 12:57
    • Marqué comme réponse stephane_l2 vendredi 17 juillet 2015 12:57
    vendredi 17 juillet 2015 12:56