Freigeben über


Schriftartsteuerelement

Um die Integration und Konfiguration der Schriftartunterstützung in Anwendungen zu vereinfachen, die Textverarbeitungs- und Textbearbeitungsfunktionen erfordern, bietet das Windows-Menübandframework ein spezielles Schriftartsteuerelement, das eine breite Palette von Schriftarteigenschaften wie Schriftartname, Formatvorlage, Punktgröße und Effekte verfügbar macht.

Einleitung

Das Schriftartsteuerelement ist ein zusammengesetztes Steuerelement, das aus Schaltflächen, Umschaltflächen, Dropdownlistenfeldern und Kombinationsfeldern besteht, die alle zum Angeben einer bestimmten Schriftarteigenschaft oder Formatierungsoption verwendet werden.

Der folgende Screenshot zeigt das Schriftartensteuerelement des Menübands in WordPad für Windows 7.

Screenshot des Fontcontrol-Elements, wobei das richfont-Attribut auf

Einheitliche Benutzeroberfläche

Als integriertes Menüband-Steuerelement verbessert das Schriftartsteuerelement die allgemeine Schriftartverwaltung, Auswahl- und Formatierungsfunktionalität und bietet eine umfassende, konsistente Benutzererfahrung in allen Menübandanwendungen.

Diese konsistente Benutzeroberfläche umfasst

  • Standardisierte Formatierung und Auswahl von Schriftarten in menübandübergreifenden Anwendungen.

  • Standardisierte Schriftartdarstellung über Menübandanwendungen hinweg.

  • Automatische Schriftartaktivierung in Windows 7, die auf der Einstellung Anzeigen oder Ausblenden für jede Schriftart in der Systemsteuerung Schriftarten basiert. Das Schriftartensteuerelement zeigt nur die Schriftarten an, die auf Anzeigenfestgelegt sind.

    Anmerkung

    In Windows Vista bietet die Systemsteuerung Schriftarten nicht die Anzeigen oder Ausblenden Funktionalität, sodass alle Schriftarten aktiviert werden.

  • Schriftartverwaltung, die direkt über das Steuerelement verfügbar ist.

    Der folgende Screenshot zeigt, dass über das Schriftartensteuerelement direkt auf die Schriftarten Systemsteuerung zugegriffen werden kann.

    Screenshot der Schriftartfamilienliste in Wordpad für Windows 7.

  • Unterstützung für die automatische Vorschau.

  • Gefährdung von Schriftarten, die für einen Benutzer am relevantesten sind, z. B.

    • Lokalisierte Schriftartlisten für internationale Benutzer.
    • Schriftartlisten, die auf dem Eingabegerät basieren.

    Anmerkung

    Die Unterstützung für diese Funktionalität ist auf keiner Plattform verfügbar, die älter als Windows 7 ist.

Einfache Integration und Konfiguration

Durch die Bereitstellung standardmäßiger, wiederverwendbarer und einfach genutzter Funktionen erleichtert das Menüband-Schriftartsteuerelement die Integration der Schriftartunterstützung in eine Anwendung.

Die Details der Schriftartauswahl und -formatierung werden in ein eigenständiges logisches Element eingeschlossen, das

  • Beseitigt die komplexe Verwaltung von Steuerelement-Interabhängigkeiten, die typisch für Implementierungen von Schriftartsteuerelementen sind.
  • Erfordert einen einzelnen Befehlshandler für alle Funktionen, die von den Untersteuerelementen des Schriftartsteuerelements verfügbar gemacht werden.

Dieser einzelne Befehlshandler ermöglicht es dem Schriftartsteuerelement, die Funktionalität verschiedener Untersteuerelemente intern zu verwalten; ein Untersteuerelement interagiert niemals direkt mit der Anwendung, unabhängig von seiner Funktion.

Weitere Features des Schriftartsteuerelements sind

  • Automatische, DPI-fähige Generierung einer WYSIWYG-Bitmapdarstellung (was Sie sehen), Bitmapdarstellung für jede Schriftart im menü Schriftartfamilie Menü.

  • Windows Graphics Device Interface (GDI) Integration.

  • Lokalisierte Schriftartfamilienbitmaps und QuickInfos.

  • Schriftartenaufzählung, Gruppierung und Metadaten zum Verwalten und Darstellen von Schriftarten.

    Anmerkung

    Die Unterstützung für diese Funktionalität ist auf keiner Plattform verfügbar, die älter als Windows 7 ist.

  • Die Textfarbe und Textmarkierungsfarbe Dropdownfarbauswahlen, die das Menüband Drop-Down Farbauswahl Verhalten spiegeln.

  • Unterstützung der automatischen Vorschau durch alle Katalog-Untersteuerelemente für Schriftartsteuerelemente: Schriftfamilie, Schriftgrad, Textfarbeund Text-Hervorhebungsfarbe.

Ausrichtung mit allgemeinen GDI-Textstrukturen

Windows Graphics Device Interface (GDI) Textstapelkomponenten werden verwendet, um schriftartauswahl- und Formatierungsfunktionen über das Menübandschriftart-Steuerelement verfügbar zu machen. Die verschiedenen Schriftartfeatures, die von der LOGFONT-Struktur, CHOOSEFONT-Strukturunterstützt werden, und CHARFORMAT2 Struktur- werden über die Untersteuerelemente verfügbar gemacht, die im Schriftartensteuerelement enthalten sind.

Die Untersteuerelemente, die im Schriftartensteuerelement angezeigt werden, hängen von der im Menüband-Markup deklarierten FontType- Vorlage ab. Die FontType--Vorlagen (die im folgenden Abschnitt ausführlich erläutert werden) sind darauf ausgelegt, die allgemeinen Windows Graphics Device Interface (GDI) Textstrukturen auszurichten.

Hinzufügen eines FontControl-Elements

In diesem Abschnitt werden die grundlegenden Schritte zum Hinzufügen eines Schriftartsteuerelements zu einer Menübandanwendung beschrieben.

Deklarieren eines FontControl-Elements im Markup

Wie andere Menübandsteuerelemente wird das Schriftartsteuerelement im Markup mit einem FontControl--Element deklariert und einer Befehlsdeklaration über eine Befehls-ID zugeordnet. Wenn die Anwendung kompiliert wird, wird die Befehls-ID verwendet, um den Befehl an einen Befehlshandler in der Hostanwendung zu binden.

Anmerkung

Wenn keine Befehls-ID mit dem FontControl- im Markup deklariert wird, wird eine vom Framework generiert.

Da die Untersteuerelemente des Schriftartsteuerelements nicht direkt verfügbar gemacht werden, ist die Anpassung des Schriftartsteuerelements auf drei FontType- Layoutvorlagen beschränkt, die vom Framework definiert sind.

Durch die Kombination der Layoutvorlage mit FontControl- Attributen wie IsHighlightButtonVisible, IsStrikethroughButtonVisibleund IsUnderlineButtonVisiblekönnen Weitere Anpassungen des Schriftartsteuerelements erreicht werden.

Anmerkung

Schriftartfunktionen, die über die standardmäßigen Schriftartsteuerelementvorlagen und -attribute hinaus verfügbar gemacht werden, erfordern eine implementierung eines benutzerdefinierten Schriftartsteuerelements, die sich außerhalb des Umfangs dieses Artikels befindet.

In der folgenden Tabelle sind die Schriftartsteuerelementvorlagen und der Bearbeitungssteuerelementtyp aufgeführt, an dem jede Vorlage ausgerichtet ist.

Schablone Unterstützt
FontOnly LOGFONT-Struktur
FontWithColor CHOOSEFONT-Struktur
RichFont CHARFORMAT2 Struktur

In der folgenden Tabelle sind die Steuerelemente aufgeführt, die jeder Vorlage zugeordnet sind, und die Steuerelemente identifiziert, die für eine zugeordnete Vorlage optional sind.

Steuerung

Schablonen

RichFont-

FontWithColor-

FontOnly-

Vorgabe

Wahlfrei

Vorgabe

Wahlfrei

Vorgabe

Wahlfrei

Schriftgrad Kombinationsfeld

Ja

Nein

Ja

Nein

Ja

Nein

Schriftartfamilie Kombinationsfeld

Ja

Nein

Ja

Nein

Ja

Nein

Schaltfläche Schriftart vergrößern

Ja

Ja

Ja

Ja

-

-

Schaltfläche Schriftart verkleinern

Ja

Ja

Ja

Ja

-

-

Schaltfläche Fett

Ja

Nein

Ja

Nein

Ja

Nein

Schaltfläche Kursiv

Ja

Nein

Ja

Nein

Ja

Nein

Schaltfläche Unterstrichen

Ja

Nein

Ja

Ja

Ja

Ja

Schaltfläche Durchgestrichen

Ja

Nein

Ja

Ja

Ja

Ja

Schaltfläche tiefgestellte

Ja

Nein

-

-

-

-

Schaltfläche hochgestellte

Ja

Nein

-

-

-

-

Schaltfläche "Textmarkierung"

Ja

Nein

Ja

Ja

-

-

Schaltfläche Textfarbe

Ja

Nein

Ja

Nein

-

-

Wenn das Layoutverhalten eines Schriftartsteuerelements deklariert wird, stellt das Menübandframework eine optionale SizeDefinition Layoutvorlage OneFontControlbereit, die zwei Untersteuerelementkonfigurationen basierend auf der Größe des Menübands und dem für das Schriftartensteuerelement verfügbaren Platz definiert. Weitere Informationen finden Sie unter Anpassen eines Menübands über Größendefinitionen und Skalierungsrichtlinien.

Hinzufügen eines FontControl-Elements zu einem Menüband

Die folgenden Codebeispiele veranschaulichen die grundlegenden Markupanforderungen zum Hinzufügen eines Schriftartsteuerelements zu einem Menüband:

Dieser Codeabschnitt zeigt das FontControl Befehlsdeklarationsmarkup, einschließlich des Tab- und Gruppieren Befehle, die zum Anzeigen eines Steuerelements im Menüband-erforderlich sind.

<Command Name="cmdTab1"
  Comment="These comments are optional and are inserted into the header file."
  Symbol="cmdTab1" Id="10000" >
  <Command.LabelTitle>Tab 1</Command.LabelTitle>
</Command>
<Command Name="cmdGroup1" Comment="Group #1" Symbol="cmdGroup1" Id="20000">
  <!-- This image is used when the group scales to a pop-up. -->
  <Command.SmallImages>
    <Image>res/Button_Image.bmp</Image>
  </Command.SmallImages>
</Command>
<Command Name="cmdFontControl" Symbol="cmdFontControl" Comment="FontControl" Id="25001" Keytip="F" />

In diesem Codeabschnitt wird das Markup veranschaulicht, das zum Deklarieren und Zuordnen eines FontControl- zu einem Command- über eine Befehls-ID erforderlich ist. Dieses beispiel enthält die Tab- und Group Deklarationen mit Skalierungseinstellungen.

<Ribbon.Tabs>
  <Tab CommandName="cmdTab1">
    <Tab.ScalingPolicy>
      <ScalingPolicy>
        <ScalingPolicy.IdealSizes>
          <Scale Group="cmdGroup1" Size="Large" />
        </ScalingPolicy.IdealSizes>
        <!-- Describe how the FontControl group scales. -->
        <Scale Group="cmdGroup1" Size="Medium" />
        <Scale Group="cmdGroup1" Size="Popup" />
      </ScalingPolicy>
    <Group CommandName="cmdGroup1" SizeDefinition="OneFontControl">
      <FontControl CommandName="cmdFontControl" FontType="RichFont" />
    </Group>
  </Tab>
</Ribbon.Tabs>

Hinzufügen eines FontControl-Elements zu einem ContextPopup

Das Hinzufügen eines Schriftartsteuerelements zu einem Kontextmenü-Popup- erfordert eine Prozedur, die dem Hinzufügen eines Schriftartsteuerelements zum Menüband ähnelt. Ein Schriftartsteuerelement in einer MiniToolbar- ist jedoch auf den Satz standardmäßiger Untersteuerelemente beschränkt, die allen Schriftartsteuerelementvorlagen gemeinsam sind: Schriftartfamilie, Schriftgrad, Fettund Kursiv.

Die folgenden Codebeispiele veranschaulichen die grundlegenden Markupanforderungen zum Hinzufügen eines Schriftartsteuerelements zu einem Kontext-Popup-:

Dieser Codeabschnitt zeigt das FontControl Befehlsdeklarationsmarkup, das zum Anzeigen eines FontControl- im ContextPopup-erforderlich ist.

<Command Name="cmdFontControl" Symbol="cmdFontControl" Comment="FontControl" Id="25001" />

Dieser Codeabschnitt zeigt das Markup, das zum Deklarieren und Zuordnen eines FontControl- zu einem Befehl über eine Befehls-ID erforderlich ist.

<ContextPopup.MiniToolbars>
  <MiniToolBar Name="MiniToolbar1">
    <MenuCategory Class="StandardItems">
      <FontControl CommandName="cmdFontControl" />
    </MenuCategory>
  </MiniToolBar>
</ContextPopup.MiniToolbars>

Zugriffstasteninfos

Auf jedes Untersteuerelement im Menüband-Schriftartsteuerelement kann über eine Tastenkombination oder Zugriffstasteninfo zugegriffen werden. Diese Zugriffstasteninfo ist vordefiniert und jedem Untersteuerelement durch das Framework zugewiesen.

Wenn dem FontControl-Element im Markup eine Keytip- Attributwert zugewiesen ist, wird dieser Wert als Präfix zur frameworkdefinierten Zugriffstasteninfo hinzugefügt.

Anmerkung

Die Anwendung sollte eine einstellige Regel für dieses Präfix erzwingen.

In der folgenden Tabelle sind die vom Framework definierten Zugriffstasteninfos aufgeführt.

Untersteuerelement Zugriffstasteninfo
Schriftfamilie F
Schriftschnitt T
Schriftgrad S
Schriftart vergrößern G
Schrift verkleinern K
Kühn B
Kursiv Ich
Unterstreichen U
Durchgestrichen X
Exponent Y oder Z Hinweis: Wenn die -Zugriffstasteninfo Attribut nicht im Markup deklariert ist, lautet die Standardtasteninfo Y; andernfalls ist die Standardtasteninfo Zugriffstasteninfo + Z.
Subskript Ein
Schriftfarbe C
Hervorhebung der Schriftart H

Das empfohlene Präfix für eine mehrsprachige Benutzeroberfläche (Multilingual User Interface, MUI) EN-US Menüband lautet "F", wie im folgenden Beispiel gezeigt.

<Command Name="cmdFontControl" Symbol="cmdFontControl" Comment="FontControl" Id="25001" Keytip="F" />

Der folgende Screenshot veranschaulicht die Zugriffstasteninfos für Schriftartsteuerelemente, wie sie im vorherigen Beispiel definiert sind.

Screenshot der FontControl-Zugriffstasteninfos in Wordpad für Windows 7.

Die Menübandressourcendatei

Wenn die Markupdatei kompiliert wird, wird eine Ressourcendatei mit allen Ressourcenverweise für die Menübandanwendung generiert.

Beispiel für eine einfache Ressourcendatei:

// ******************************************************************************
// * This is an automatically generated file containing the ribbon resource for *
// * your application.                                                          *
// ******************************************************************************

#include ".\ids.h"

STRINGTABLE 
BEGIN
  cmdTab1_LabelTitle_RESID L"Tab 1" 
    /* LabelTitle cmdTab1_LabelTitle_RESID: These comments are optional and are 
       inserted into the header file. */
END

cmdGroup1_SmallImages_RESID    BITMAP    "res\\Button_Image.bmp" 
  /* SmallImages cmdGroup1_SmallImages_RESID: Group #1 */
STRINGTABLE 
BEGIN
  cmdFontControl_Keytip_RESID L"F" /* Keytip cmdFontControl_Keytip_RESID: FontControl */
END

FCSAMPLE_RIBBON    UIFILE    "Debug\\FCSample.bml"

Eigenschaften des Schriftartsteuerelements

Das Menübandframework definiert eine Auflistung von Eigenschaftenschlüsseln für das Schriftartsteuerelement und die zugehörigen Untersteuerelemente.

In der Regel wird eine Schriftartsteuerelement-Eigenschaft in der Menüband-Benutzeroberfläche aktualisiert, indem der dem Steuerelement zugeordnete Befehl durch einen Aufruf der IUIFramework::InvalidateUICommand-Methode ungültig wird. Das Ungültigkeitsereignis wird behandelt, und die durch die IUICommandHandler::UpdateProperty Rückrufmethode definierten Eigenschaftenaktualisierungen.

Die IUICommandHandler::UpdateProperty- Rückrufmethode wird nicht ausgeführt, und die Anwendung wird nach einem aktualisierten Eigenschaftswert abgefragt, bis die Eigenschaft vom Framework benötigt wird. Wenn beispielsweise eine Registerkarte aktiviert und ein Steuerelement in der Menüband-Benutzeroberfläche angezeigt wird, oder wenn eine QuickInfo angezeigt wird.

Anmerkung

In einigen Fällen kann eine Eigenschaft über die IUIFramework::GetUICommandProperty Methode abgerufen und mit der IUIFramework::SetUICommandProperty--Methode festgelegt werden.

In der folgenden Tabelle sind die Eigenschaftenschlüssel aufgeführt, die dem Schriftartensteuerelement zugeordnet sind.

Eigenschaftsschlüssel Notizen
UI_PKEY_FontProperties Stellt in Aggregat als IPropertyStore- -Objekt alle Schriftartsteuerelement-Untersteuerelementeigenschaften zur Verfügung.
Das Framework fragt diese Eigenschaft ab, wenn UI_INVALIDATIONS_VALUE als Wert von Flags im Aufruf von IUIFramework::InvalidateUICommandübergeben wird.
UI_PKEY_FontProperties_ChangedProperties Macht in Aggregat als IUISimplePropertySet- -Objekt nur Schriftartsteuerelement-Untersteuerelementeigenschaften verfügbar, die geändert wurden.
UI_PKEY_Keytip Kann nur durch Ungültigheit aktualisiert werden.
UI_PKEY_Enabled Unterstützt IUIFramework::GetUICommandProperty und IUIFramework::SetUICommandProperty.

Zusätzlich zu den eigenschaften, die vom Schriftartsteuerelement selbst unterstützt werden, definiert das Menübandframework auch einen Eigenschaftenschlüssel für jedes Schriftartsteuerelement-Untersteuerelement. Diese Eigenschaftenschlüssel und ihre Werte werden vom Framework über eine IPropertyStore- Schnittstellenimplementierung verfügbar gemacht, die die Methoden zum Verwalten einer Auflistung definiert, auch als Eigenschaftenbehälter bezeichnet, von Namen- und Wertpaaren.

Die Anwendung übersetzt die Schriftartstrukturen in Eigenschaften, auf die über die IPropertyStore--Schnittstellenmethoden zugegriffen werden kann. Dieses Modell hebt die Unterscheidung zwischen den Schriftartsteuerelementen und den GDI-Textstapelkomponenten (LOGFONT-Struktur, CHOOSEFONT-Strukturund CHARFORMAT2 Struktur) hervor, die vom Framework unterstützt werden.

In der folgenden Tabelle sind die einzelnen Steuerelemente und die zugehörigen Eigenschaftenschlüssel aufgeführt.

Steuerung Eigenschaftsschlüssel Notizen
Schriftgrad UI_PKEY_FontProperties_Size Wenn eine Textausführung mit heterogener Größe hervorgehoben wird, legt das Menübandframework das Schriftgrad Steuerelement auf leer und den Wert von UI_PKEY_FontProperties_Size auf 0 fest. Wenn auf die Schaltfläche Schriftart "Vergrößern" oder Schaltfläche "Schrift verkleinern" geklickt wird, wird die Größe des gesamten hervorgehobenen Texts geändert, der relative Unterschied in den Textgrößen wird jedoch beibehalten.
Schriftartfamilie UI_PKEY_FontProperties_Family Die Namen der GDI-Schriftarten variieren je nach Systemgebietsschema. Wenn der Wert von UI_PKEY_FontProperties_Family in anwendungsübergreifenden Sitzungen beibehalten wird, sollte dieser Wert für jede neue Sitzung abgerufen werden.
Schriftart vergrößern UI_PKEY_FontProperties_Size Siehe Schriftgrad.
Schrift verkleinern UI_PKEY_FontProperties_Size Siehe Schriftgrad.
Fett UI_PKEY_FontProperties_Bold
kursiv UI_PKEY_FontProperties_Italic
Unterstrichen UI_PKEY_FontProperties_Underline
Durchgestrichen UI_PKEY_FontProperties_Strikethrough
tiefgestellte UI_PKEY_FontProperties_VerticalPositioning Wenn die Schaltfläche tiefgestellten festgelegt ist, kann auch die hochgestellten nicht festgelegt werden.
hochgestellte UI_PKEY_FontProperties_VerticalPositioning Wenn die Schaltfläche hochgestellte festgelegt ist, kann die tiefgestellten nicht ebenfalls festgelegt werden.
Textmarkierungsfarbe UI_PKEY_FontProperties_BackgroundColor, UI_PKEY_FontProperties_BackgroundColorType Stellt die gleiche Funktionalität wie die HighlightColors Vorlage des DropDownColorPicker--Elements bereit.
Es wird dringend empfohlen, nur eine anfängliche Textmarkierungsfarbe festzulegen, Wert von der Anwendung festgelegt werden. Der letzte ausgewählte Wert sollte beibehalten und nicht festgelegt werden, wenn der Cursor innerhalb eines Dokuments neu positioniert wird. Dies ermöglicht den schnellen Zugriff auf die letzte Auswahl des Benutzers, und die Farbauswahl muss nicht erneut geöffnet werden.
Farbmuster können nicht angepasst werden.
Textfarbe UI_PKEY_FontProperties_ForegroundColor, UI_PKEY_FontProperties_ForegroundColorType Stellt die gleiche Funktionalität wie die StandardColors Vorlage des DropDownColorPicker--Elements bereit.
Es wird dringend empfohlen, dass nur eine anfängliche Textfarbe Wert von der Anwendung festgelegt wird. Der letzte ausgewählte Wert sollte beibehalten und nicht festgelegt werden, wenn der Cursor innerhalb eines Dokuments neu positioniert wird. Dies ermöglicht den schnellen Zugriff auf die letzte Auswahl des Benutzers, und die Farbauswahl muss nicht erneut geöffnet werden.
Farbmuster können nicht angepasst werden.

Definieren eines FontControl-Befehlshandlers

In diesem Abschnitt werden die Schritte beschrieben, die zum Binden eines Schriftartsteuerelements an einen Befehlshandler erforderlich sind.

Warnung

Jeder Versuch, ein Farbmuster aus der Farbauswahl eines Schriftartsteuerelements auszuwählen, kann zu einer Zugriffsverletzung führen, wenn dem Steuerelement kein Befehlshandler zugeordnet ist.

Im folgenden Codebeispiel wird veranschaulicht, wie Befehle gebunden werden, die im Markup an einen Befehlshandler deklariert werden.

//
//  FUNCTION: OnCreateUICommand(UINT, UI_COMMANDTYPE, IUICommandHandler)
//
//  PURPOSE: Called by the Ribbon framework for each command specified in markup, to allow
//           the host application to bind a command handler to that command.
//
STDMETHODIMP CApplication::OnCreateUICommand(
  UINT nCmdID,
  __in UI_COMMANDTYPE typeID,
  __deref_out IUICommandHandler** ppCommandHandler)
{
  UNREFERENCED_PARAMETER(typeID);
  UNREFERENCED_PARAMETER(nCmdID);

  if (NULL == m_pCommandHandler)
  {
    HRESULT hr = CCommandHandler::CreateInstance(&m_pCommandHandler);
    if (FAILED(hr))
    {
      return hr;
    }
  }

  return m_pCommandHandler->QueryInterface(IID_PPV_ARGS(ppCommandHandler));
}

Im folgenden Codebeispiel wird veranschaulicht, wie die IUICommandHandler::Execute Methode für ein Schriftartsteuerelement implementiert wird.

//
//  FUNCTION: Execute()
//
//  PURPOSE: Called by the Ribbon framework when a command is executed 
//           by the user. For example, when a button is pressed.
//
STDMETHODIMP CCommandHandler::Execute(
  UINT nCmdID,
  UI_EXECUTIONVERB verb,
  __in_opt const PROPERTYKEY* key,
  __in_opt const PROPVARIANT* ppropvarValue,
  __in_opt IUISimplePropertySet* pCommandExecutionProperties)
{
  UNREFERENCED_PARAMETER(nCmdID);

  HRESULT hr = E_NOTIMPL;
  if ((key) && (*key == UI_PKEY_FontProperties))
  {
    // Font properties have changed.
    switch (verb)
    {
      case UI_EXECUTIONVERB_EXECUTE:
      {
        hr = E_POINTER;
        if (pCommandExecutionProperties != NULL)
        {
          // Get the changed properties.
          PROPVARIANT varChanges;
          hr = pCommandExecutionProperties->GetValue(UI_PKEY_FontProperties_ChangedProperties, &varChanges);
          if (SUCCEEDED(hr))
          {
            IPropertyStore *pChanges;
            hr = UIPropertyToInterface(UI_PKEY_FontProperties, varChanges, &pChanges);
            if (SUCCEEDED(hr))
            {
              // Using the changed properties, set the new font on the selection on RichEdit control.
              g_pFCSampleAppManager->SetValues(pChanges);
              pChanges->Release();
            }
            PropVariantClear(&varChanges);
          }
        }
        break;
      }
      case UI_EXECUTIONVERB_PREVIEW:
      {
        hr = E_POINTER;
        if (pCommandExecutionProperties != NULL)
        {
          // Get the changed properties for the preview event.
          PROPVARIANT varChanges;
          hr = pCommandExecutionProperties->GetValue(UI_PKEY_FontProperties_ChangedProperties, &varChanges);
          if (SUCCEEDED(hr))
          {
            IPropertyStore *pChanges;
            hr = UIPropertyToInterface(UI_PKEY_FontProperties, varChanges, &pChanges);
            if (SUCCEEDED(hr))
            {
              // Set the previewed values on the RichEdit control.
              g_pFCSampleAppManager->SetPreviewValues(pChanges);
              pChanges->Release();
            }
            PropVariantClear(&varChanges);
          }
        }
        break;
      }
      case UI_EXECUTIONVERB_CANCELPREVIEW:
      {
        hr = E_POINTER;
        if (ppropvarValue != NULL)
        {
          // Cancel the preview.
          IPropertyStore *pValues;
          hr = UIPropertyToInterface(UI_PKEY_FontProperties, *ppropvarValue, &pValues);
          if (SUCCEEDED(hr))
          {   
            g_pFCSampleAppManager->CancelPreview(pValues);
            pValues->Release();
          }
        }
        break;
      }
    }
  }

  return hr;
}

Im folgenden Codebeispiel wird veranschaulicht, wie die IUICommandHandler::UpdateProperty--Methode für ein Schriftartsteuerelement implementiert wird.

//
//  FUNCTION: UpdateProperty()
//
//  PURPOSE: Called by the Ribbon framework when a command property (PKEY) needs to be updated.
//
//  COMMENTS:
//
//    This function is used to provide new command property values, such as labels, icons, or
//    tooltip information, when requested by the Ribbon framework.  
//    
//
STDMETHODIMP CCommandHandler::UpdateProperty(
  UINT nCmdID,
  __in REFPROPERTYKEY key,
  __in_opt const PROPVARIANT* ppropvarCurrentValue,
  __out PROPVARIANT* ppropvarNewValue)
{
  UNREFERENCED_PARAMETER(nCmdID);

  HRESULT hr = E_NOTIMPL;
  if (key == UI_PKEY_FontProperties)
  {
    hr = E_POINTER;
    if (ppropvarCurrentValue != NULL)
    {
      // Get the font values for the selected text in the font control.
      IPropertyStore *pValues;
      hr = UIPropertyToInterface(UI_PKEY_FontProperties, *ppropvarCurrentValue, &pValues);
      if (SUCCEEDED(hr))
      {
        g_pFCSampleAppManager->GetValues(pValues);

        // Provide the new values to the font control.
        hr = UIInitPropertyFromInterface(UI_PKEY_FontProperties, pValues, ppropvarNewValue);
        pValues->Release();
      }
    }
  }

  return hr;
}

Windows Ribbon Framework-Steuerelementbibliothek

FontControl-Element

Eigenschaften des Schriftartsteuerelements

FontControl-Beispiel-