IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Dans la liste suivante quelle technologie d'interface utilisateur a été ajoutée à Windows 7 ?

Toutes les semaines un peu de code pour aller plus loin avec Windows 7

Retrouvez l'intégralité des questions / réponses sur le développement sous Windows 7 dans l'article suivant.

Commentez cet article : 41 commentaires Donner une note à l´article (5)

Article lu   fois.

Les deux auteurs

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Dans la liste suivante, quelle technologie d'interface utilisateur a été ajoutée à Windows 7 ?

La plateforme de rubans de Windows est un système de présentation de commande riche qui fournit une alternative moderne aux menus et aux barres d'outils traditionnelles de Windows. Similaire aux fonctionnalités et à l'apparence de l'interface utilisateur de Microsoft Office 2007, la plateforme de rubans Windows est composée d'une barre de commandes de rubans qui expose les principales caractéristiques d'une application à travers une série d'onglets en haut de la fenêtre de l'application et un système de menu contextuel.

Image non disponible

L'utilisation des rubans, tire profit du modèle MVC (Model View Controler).

En effet, pour profiter des rubans de Windows, il suffit :

  1. De partir d'un fichier au format XML, décrivant l'interface et les commandes ;
  2. De le compiler à l'aide d'un outil spécifique, UICC.exe afin de construire un fichier de ressources qui sera à incorporer dans l'application ;
  3. De construire une classe qui permettra de l'initialiser et de réagir aux évènements.
Image non disponible
Exemple de fichier XML
Sélectionnez
<Application xmlns='http://schemas.microsoft.com/windows/2009/Ribbon'>
  <Application.Commands>
    <Command Name="TabAccueil" Symbol="cmdTabAccueil" Id="30000">
      <Command.LabelTitle>
        <String Id ="200">Accueil</String>
      </Command.LabelTitle>
    </Command >
    <Command Name="GroupPrincipal"  Symbol="cmdGroupPrincipal" Id="30001" LabelTitle="Principal"/>
    <Command Name="MonBouton" Symbol="cmdMonBouton" Id="30002" LabelTitle="Mon Bouton">
      <Command.TooltipTitle>Mon Bouton</Command.TooltipTitle>
      <Command.TooltipDescription>Cliquez sur mon Bouton</Command.TooltipDescription>
      <Command.LargeImages>
        <Image Source="Button_Image.bmp"/>
      </Command.LargeImages>
    </Command>

  </Application.Commands>

  <Application.Views>
    <Ribbon>
      <Ribbon.Tabs>
        <Tab CommandName="TabAccueil">
          <Group CommandName="GroupPrincipal" SizeDefinition="TwoButtons">
            <Button CommandName="MonBouton"/>
            <ToggleButton CommandName="MonChoix"/>
          </Group>
        </Tab>
      </Ribbon.Tabs>
    </Ribbon>
  </Application.Views>
</Application>
Compilation du fichier XML
Sélectionnez
UICC.exe BalisesRuban.xml BaliseRuban.bml  /res:Rubanres.rc
Exemple de classe et d'initialisation de la plateforme de rubans
Sélectionnez
class CApplication
    : public CComObjectRootEx<CComMultiThreadModel>
    , public IUIApplication
    , public IUICommandHandler
{
    private:
        BOOL _fEnabled;
public:
    BEGIN_COM_MAP(CApplication)
        COM_INTERFACE_ENTRY(IUIApplication)
        COM_INTERFACE_ENTRY(IUICommandHandler)
    END_COM_MAP()

    STDMETHOD(OnViewChanged)(UINT32 nViewID, __in UI_VIEWTYPE typeID, __in IUnknown* pView, UI_VIEWVERB verb, INT32 uReasonCode)  
    { 
        return E_NOTIMPL; 
    }
    STDMETHOD(OnCreateUICommand)(UINT32 nCmdID, __in UI_COMMANDTYPE typeID, __deref_out IUICommandHandler** ppCommandHandler) 
    { 
        if (nCmdID == cmdMonBouton || nCmdID == cmdMonChoix )
        {
            return QueryInterface(IID_PPV_ARGS(ppCommandHandler));
        }
        return E_NOTIMPL; 
    }

    STDMETHOD(OnDestroyUICommand)(UINT32 commandId, __in UI_COMMANDTYPE typeID, __in_opt IUICommandHandler* pCommandHandler) 
    { 
        return E_NOTIMPL; 
    }
    STDMETHODIMP Execute(UINT nCmdID,
                        UI_EXECUTIONVERB verb, 
                        __in_opt const PROPERTYKEY* key,
                        __in_opt const PROPVARIANT* ppropvarValue,
                        __in_opt IUISimplePropertySet* pCommandExecutionProperties)
    {
        HRESULT hr = S_OK;
        
        switch (verb)
        {
        case UI_EXECUTIONVERB_EXECUTE:
            if (nCmdID == cmdMonBouton)
            {
               MessageBox(NULL, L"Vous avez cliqué sur mon bouton !",L"La méthode Execute ", MB_OK);
            }
            break;
        }    
        return hr;
    }

HRESULT InitialisationRuban(HWND hWindowFrame)
{
    HRESULT hr = CoCreateInstance(CLSID_UIRibbonFramework, 
                                  NULL, 
                                  CLSCTX_INPROC_SERVER, 
                                  IID_PPV_ARGS(&g_pFramework));

    CComObject<CApplication> *pApplication = NULL;
    CComObject<CApplication>::CreateInstance(&pApplication);
    g_pFramework->Initialize(hWindowFrame, pApplication);
    g_pFramework->LoadUI(GetModuleHandle(NULL), L"APPLICATION_RIBBON");
    return 0;
}

Il est bien évidemment possible de mapper les commandes de rubans, sur les commandes des anciens menus afin d'éviter de tout recoder.

Pour plus d'infos

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2011 Microsoft MSDN France. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.