Windows Ribbon Framework: Как изменить поверхность шрифта и размер?

Как Вы изменяете поверхность шрифта и размер шрифта, используемый Windows Ribbon Framwork's UIRibbon?

Шрифт, используемый лентой, не соответствует шрифту, который пользователь выбрал в качестве их предпочтений Windows - который является предпочтением мое использование приложения. Это означает, что, поскольку шрифт в Windows становится больше, лента становится меньшей.

Заметьте, как лента становится меньшей в каждом снимке экрана:

Segoe UI 9pt (значение по умолчанию Windows)

alt text

Segoe UI 12pt (что я использую),

alt text

Segoe UI 16pt (что использование клиента)

alt text

Вы видите к тому времени, когда мы добираемся до 16 ПБ, текст на ленте довольно трудно прочитать.

Фон

Пользователь может настроить Windows для использования их предпочтительного размера шрифта, например:

  • 8 ПБ
  • 9 ПБ
  • 12 ПБ

и их предпочтительная поверхность шрифта, например:

  • MS Sans Serif
  • Microsoft Sans Serif
  • Tahoma
  • Segoe UI
  • Calibri

но Windows Ribbon Framework значением по умолчанию использует шрифт, который не является предпочтением пользователя.

Править: Перемещенное изображение вершина для ловли белок, притянутых солнечными вещами.
Редактирование 2: Добавленный другое красочное изображение, для получения удара.
Редактирование 3: Редактирование для получения удара
Редактирование 4: Добавление другого другого изображения для получения удара


Лента действительно позволяет настраивать цвета ленты.

Следующий фрагмент кода используется для установки UI_PKEY_GlobalBackgroundColor из ленты. В этом случае я использую цвет, который является пользователем, в настоящее время выбирают Аэро цветовую схему:

    IUIFramework framework;
    ...

    TColor glass = Dwm.GetColorizationColor();
    VarCast(v, ColorToUIHSB(glass), UI_PKEY_GlobalBackgroundColor.pid);

    IPropertyStore ps = framework as IPropertyStore;
    ps.SetValue(UI_PKEY_GlobalBackgroundColor, PROPVARIANT(v));
    ps.Commit;

И теперь лента теперь окрашена для соответствия цветовой схеме Windows:

alt text

Но я не могу найти опцию изменить поверхность/размер шрифта.

Примечание: В то время как лента может соблюдать настройки DPI пользователя, который не является этим вопросом.


Это работает в Outlook 2010

Могло бы быть полезно отметить, что лента 2010-х Outlook действительно чествует пользователя (меню) предпочтения шрифта. Можно получить шрифт меню пользователя путем вызова [SystemParametersInfo][6]:

SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));

ncm.lfMenuFont <---

Outlook на 9 ПБ 2010

alt text

Outlook на 12 ПБ 2010

alt text

Outlook на 12 ПБ 2010

alt text

Заметить ленточные увеличения размера с размером шрифта? (Который, в этих измененных снимках экрана, средства, что лента не становится перцептивно меньшей.)

Существует две возможности:

  • 2010 Outlook знает, как скорректировать размер шрифта в Windows Ribbon Framework
  • Outlook 2010 не использует Windows Ribbon Framework

Windows 7 Краска не работает

Также полезно отметить, что Windows Paint в Windows 7 не соблюдает предпочтения шрифта пользователя. Это приводит меня полагать, что это (mspaint) действительно использует Windows Ribbon Framework, и что Windows Ribbon Framework не поддерживает установку размера шрифта. Если, если Вы на самом деле попытались быть услужливыми, и читать полностью вниз в здесь, Вы поймете, что это - корректный ответ: это не возможно. Таким образом, если Вы хотите свободные 300 представителей, Вы добавляете что как ответ.

Править: Перекрестно разосланный к Microsoft

Ключевые слова: Windows Ribbon Framework, размер шрифта изменения, UIRibbon, поверхность шрифта, лента ui, живописный ui, живописная лента, быстрая лента, быстрый ui, изменяют ленту окон шрифта, uiribbon.h

Microsoft имеет много Ленточных реализаций:


Краска MS не соблюдает предпочтение шрифта меню

Вот снимок экрана, показывающий мой настроенный Windows 7 Menu Font setting 12 ПБ с видимым msPaint, и Outlook 2010, видимый для сравнения.

alt text


Пример кода

type 
    TfrmRibbonTest = class(TForm, IUIApplication)
      ...
    private
       Fframework: IUIFramework;

       {IUIApplication}
       function  OnViewChanged(viewId: SYSUINT; typeID: UI_VIEWTYPE; const view: IUnknown; verb: UI_VIEWVERB; uReasonCode: SYSINT): HResult; stdcall;
       function  OnCreateUICommand(commandId: SYSUINT; typeID: UI_COMMANDTYPE; out commandHandler: IUICommandHandler): HResult; stdcall;
       function  OnDestroyUICommand(commandId: SYSUINT; typeID: UI_COMMANDTYPE; const commandHandler: IUICommandHandler): HResult; stdcall;
    end;


procedure TForm1.Button1Click(Sender: TObject);
var
   hr: HRESULT;
begin
   Fframework := CreateComObject(CLASS_UIRibbonFramework) as IUIFramework;
   hr := Fframework.Initialize(Self.Handle, Self); //we implement IUIApplication
   OleCheck(hr);
   hr := Fframework.LoadUI(hInstance, 'APPLICATION_RIBBON');
   OleCheck(hr);
end;

function TfrmRibbonTest.OnCreateUICommand(commandId: SYSUINT; typeID: UI_COMMANDTYPE; out commandHandler: IUICommandHandler): HResult;
begin
    Result := S_OK;
end;

function TfrmRibbonTest.OnDestroyUICommand(commandId: SYSUINT; typeID: UI_COMMANDTYPE;
  const commandHandler: IUICommandHandler): HResult;
begin
    Result := S_OK;
end;

function TfrmRibbonTest.OnViewChanged(viewId: SYSUINT; typeID: UI_VIEWTYPE; const view: IUnknown; verb: UI_VIEWVERB; uReasonCode: SYSINT): HResult;
begin
    Result := S_OK;
end;

Windows Ribbon Framework 14pt! = 14 ПБ

Вот снимок экрана со шрифтом Windows Menu, настроенным для 14 ПБ (на машине на 96 точек на дюйм). Outlook 2010 составляет 14 ПБ, Photoshop CS3, составляет 14 ПБ. Лента... меньше.

alt text

См. также

9
задан 24 revs, 2 users 79% 23 July 2019 в 11:12
поделиться