Windows Ribbon框架:如何更改字体和大小? [英] Windows Ribbon Framework: How to change font face and size?

查看:1328
本文介绍了Windows Ribbon框架:如何更改字体和大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何更改



但是我找不到更改字体/大小的选项。



注意 $ b




它适用于Outlook 2010



可能有帮助,请注意,Outlook 2010的功能区确实符合用户(菜单)字体首选项。您可以通过调用 [SystemParametersInfo] [6] 获取用户的菜单字体:

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

ncm.lfMenuFont< ---



9pt Outlook 2010 < h2>



12pt Outlook 2010





12pt Outlook 2010





请注意,功能区的大小与字体大小相关? (在这些调整大小的屏幕截图中,意味着功能区的感觉不会更小)。



有两种可能性:




  • Outlook 2010知道如何调整Windows Ribbon框架中的字体大小

  • Outlook 2010不使用Windows Ribbon Framework



Windows 7 Paint不起作用



注意Windows中的Windows Paint也很有用7 尊重用户的字体首选项。这使我相信它(mspaint)确实使用Windows Ribbon Framework,而且Windows Ribbon Framework不支持设置字体大小。如果你真的试图帮助你,并一直读到这里,你会意识到这是正确的答案:这是不可能的。所以,如果你想要一个免费的300代表,你可以补充一个答案。



编辑:

  • http://i42.tinypic.com/15x0pj5.jpg


  • 解决方案

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


    How do you change the font face and font size used by the Windows Ribbon Framwork's UIRibbon?

    The font used by the ribbon does not match the font the user has chosen as their Windows preferences - which is the preference my application uses. This means that as the font in Windows gets bigger, the ribbon gets smaller.

    Notice how the ribbon gets smaller in each screenshot:

    Segoe UI 9pt (Windows default)

    Segoe UI 12pt (what i use)

    Segoe UI 16pt (what customer's use)

    You can see by the time we get to 16pt, the text on the ribbon is quite hard to read.

    Background

    The user can configure Windows to use their preferred font size, e.g.:

    • 8pt
    • 9pt
    • 12pt

    and their preferred font face, e.g.:

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

    but the Windows Ribbon Framework by default uses a font that is not the user's preference.

    Edit: Moved picture up top to catch squirrels attracted by shiny things.
    Edit 2: Added another colorful picture, to get a bump.
    Edit 3: Editing to get a bump
    Edit 4: Adding another different picture to get a bump


    The ribbon does allow customizing the colors of the ribbon.

    The following code fragment is used to set the UI_PKEY_GlobalBackgroundColor of the ribbon. In this case i use a color that is the user's currently select Aero color scheme:

        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;
    

    And now the ribbon is now colored to match the color scheme of Windows:

    alt text http://i44.tinypic.com/287dufp.jpg

    But i can't find the option to change the font face/size.

    Note: While the ribbon may honor the user's DPI settings, that isn't this question.


    It works in Outlook 2010

    It might be helpful to note that Outlook 2010's ribbon does honor the user's (menu) font preferences. You can get the user's menu font by calling [SystemParametersInfo][6]:

    SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));
    
    ncm.lfMenuFont <---
    

    9pt Outlook 2010

    12pt Outlook 2010

    12pt Outlook 2010

    Notice the ribbon increases in size with the font size? (Which, in these resized screenshots, means that the ribbon does not get perceptually smaller.)

    There are two possibilities:

    • Outlook 2010 knows how to adjust the font size in the Windows Ribbon Framework
    • Outlook 2010 does not use the Windows Ribbon Framework

    Windows 7 Paint doesn't work

    It's also useful to note that Windows Paint in Windows 7 does not honor the user's font preferences. This leads me to believe that it (mspaint) does use the Windows Ribbon Framework, and that the Windows Ribbon Framework doesn't support setting a font size. If if you've actually tried to be helpful, and read all the way down to here, you'll realize this is the correct answer: it's not possible. So if you want a free 300 rep, you add that as an answer.

    Edit: Cross-posted to Microsoft

    Keywords: Windows Ribbon Framework, change font size, UIRibbon, font face, ribbon ui, scenic ui, scenic ribbon, fluent ribbon, fluent ui, change font windows ribbon, uiribbon.h

    Microsoft has a number of Ribbon implementations:


    MS Paint doesn't honor menu font preference

    Here's a screenshot showing my configured Windows 7 Menu Font setting of 12pt, with msPaint visible, and Outlook 2010 visible for comparison.


    Sample Code

    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 != 14pt

    Here is a screenshot with Windows Menu font configured for 14pt (on a 96dpi machine). Outlook 2010 is 14pt, Photoshop CS3 is 14pt. The Ribbon is...less.

    See also

    解决方案

    Based on the behavior of Windows 7 Paint, this appears to not be possible. :)

    这篇关于Windows Ribbon框架:如何更改字体和大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆