Как Вы изменяете поверхность шрифта и размер шрифта, используемый Windows Ribbon Framwork's UIRibbon?
Шрифт, используемый лентой, не соответствует шрифту, который пользователь выбрал в качестве их предпочтений Windows - который является предпочтением мое использование приложения. Это означает, что, поскольку шрифт в Windows становится больше, лента становится меньшей.
Заметьте, как лента становится меньшей в каждом снимке экрана:
Вы видите к тому времени, когда мы добираемся до 16 ПБ, текст на ленте довольно трудно прочитать.
Пользователь может настроить Windows для использования их предпочтительного размера шрифта, например:
и их предпочтительная поверхность шрифта, например:
но 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:
Но я не могу найти опцию изменить поверхность/размер шрифта.
Примечание: В то время как лента может соблюдать настройки DPI пользователя, который не является этим вопросом.
Могло бы быть полезно отметить, что лента 2010-х Outlook действительно чествует пользователя (меню) предпочтения шрифта. Можно получить шрифт меню пользователя путем вызова [SystemParametersInfo][6]
:
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));
ncm.lfMenuFont <---
Заметить ленточные увеличения размера с размером шрифта? (Который, в этих измененных снимках экрана, средства, что лента не становится перцептивно меньшей.)
Существует две возможности:
Также полезно отметить, что Windows Paint в Windows 7 не соблюдает предпочтения шрифта пользователя. Это приводит меня полагать, что это (mspaint) действительно использует Windows Ribbon Framework, и что Windows Ribbon Framework не поддерживает установку размера шрифта. Если, если Вы на самом деле попытались быть услужливыми, и читать полностью вниз в здесь, Вы поймете, что это - корректный ответ: это не возможно. Таким образом, если Вы хотите свободные 300 представителей, Вы добавляете что как ответ.
Править: Перекрестно разосланный к Microsoft
Ключевые слова: Windows Ribbon Framework, размер шрифта изменения, UIRibbon, поверхность шрифта, лента ui, живописный ui, живописная лента, быстрая лента, быстрый ui, изменяют ленту окон шрифта, uiribbon.h
Microsoft имеет много Ленточных реализаций:
Вот снимок экрана, показывающий мой настроенный Windows 7 Menu Font setting 12 ПБ с видимым msPaint, и Outlook 2010, видимый для сравнения.
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 Menu, настроенным для 14 ПБ (на машине на 96 точек на дюйм). Outlook 2010 составляет 14 ПБ, Photoshop CS3, составляет 14 ПБ. Лента... меньше.