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

| Microsoft MSDN France | Jérôme Lambert |

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

Commentez cet article : Commentez ♪

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

- Auteurs : Microsoft MSDN France, Jérôme Lambert

- Parution : 21 mars 2010

- Licence : Copyright ® 2011 Microsoft MSDN France. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.

Sommaire

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

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.

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.

Exemple de fichier XML

<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

UICC.exe BalisesRuban.xml BaliseRuban.bml  /res:Rubanres.rc

Exemple de classe et d'initialisation de la plateforme de rubans

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

- Pour découvrir la manière d'ajouter des rubans à son application, n'hésitez pas à suivre le coach Windows 7 http://msdn.microsoft.com/fr-fr/windows/coach-windows-7-differencie-atelier-3

- MSDN : http://msdn.microsoft.com/fr-fr/windows/default.aspx

- Le coach Windows 7 : http://msdn.microsoft.com/fr-fr/windows/msdn.coach.windows7

- Kit de développement pour Windows 7 : http://msdn.microsoft.com/fr-fr/windows/gg398052.aspx