gpt4 book ai didi

delphi - Windows 功能区框架 : How to change font face and size?

转载 作者:行者123 更新时间:2023-12-03 14:43:52 27 4
gpt4 key购买 nike

如何更改Windows Ribbon Framwork 使用的字体和字体大小的UIRibbon?

功能区使用的字体与用户选择作为其 Windows 首选项的字体不匹配 - 这是我的应用程序使用的首选项。这意味着随着 Windows 中的字体变大,功能区变小。

请注意每个屏幕截图中的功能区如何变小:

Segoe UI 9pt(Windows 默认)

alt text

Segoe UI 12pt(我使用的)

alt text

Segoe UI 16pt(客户使用什么)

alt text

您可以看到,当我们达到 16pt 时,功能区上的文字很难阅读。

背景

用户可以配置 Windows 以使用他们喜欢的 字体大小 ,例如:

  • 8pt
  • 9pt
  • 12pt

  • 和他们的首选 字体 ,例如:
  • MS Sans Serif
  • 微软无衬线字体
  • 塔霍马
  • Segoe UI
  • 口径

  • Windows 功能区框架 默认情况下使用的字体是 不是 用户的偏好。

    编辑:将图片移至顶部以捕捉被 Shiny 事物吸引的松鼠。
    编辑 2:添加了另一张彩色图片,以获得凹凸。
    编辑 3:编辑以获得凹凸
    编辑 4:添加另一张不同的图片以获得凹凸

    功能区确实允许自定义 颜色的丝带。

    以下代码片段用于设置 UI_PKEY_GlobalBackgroundColor的丝带。在这种情况下,我使用用户当前选择的 Aero 配色方案的颜色:
        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

    注意到 Outlook 2010 的功能区确实尊重用户的(菜单)字体首选项可能会有所帮助。您可以通过调用 [SystemParametersInfo][6] 获取用户的菜单字体。 :
    SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));

    ncm.lfMenuFont <---

    9pt 展望 2010

    alt text

    12pt 展望 2010

    alt text

    12pt 展望 2010

    alt text

    注意到功能区随着字体大小的增加而增加了吗? (在这些调整大小的屏幕截图中,这意味着功能区在感知上不会变小。)

    有两种可能:
  • Outlook 2010 知道如何在 Windows 功能区框架中调整字体大小
  • Outlook 2010 不使用 Windows 功能区框架

  • Windows 7 画图不起作用

    值得注意的是,Windows 7 中的 Windows Paint 确实是 不是 尊重用户的字体偏好。这让我相信它 (mspaint) 确实使用了 Windows Ribbon Framework,并且 Windows Ribbon Framework 不支持设置字体大小。如果您真的试图提供帮助,并一直阅读到这里,您就会意识到这是正确的答案:这是不可能的。因此,如果您想要免费的 300 代表,请将其添加为答案。

    编辑: Cross-posted to Microsoft

    关键词: Windows Ribbon Framework,改变字体大小,UIribbon,字体,ribbon ui,scenery ui,sceneryribbon,fluentribbon,fluent ui,改变字体windowsribbon,uiribbon.h

    Microsoft 有许多 Ribbon 实现:
  • Windows Ribbon Framework - 本地
  • CMFCRibbonBar for MFC - MFC
  • Ribbon (WPF) - WPF
  • ribbon.codeplex.com - WinForms(不支持)


  • MS Paint 不支持菜单字体首选项

    这是显示我配置的 Windows 7 的屏幕截图菜单字体 设置为 12pt,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 功能区框架 14pt != 14pt

    这是 Windows 的屏幕截图 菜单 字体配置为 14pt(在 96dpi 机器上)。 Outlook 2010 是 14pt,Photoshop CS3 是 14pt。功能区是......少。

    alt text

    也可以看看
  • http://i.stack.imgur.com/VseEN.png
  • http://i42.tinypic.com/15x0pj5.jpg
  • 最佳答案

    根据 Windows 7 Paint 的行为,这似乎是不可能的。 :)

    关于delphi - Windows 功能区框架 : How to change font face and size?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2659505/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com