Pregunta

¿Cómo se cambia el tipo de fuente y tamaño de fuente utilizado por el cinta de Windows Framwork 's UIRibbon?

La fuente usada por la cinta no coincide con el tipo de letra que el usuario ha elegido como sus preferencias de Windows - que es la preferencia de mis usos de aplicación. Esto significa que como la fuente en Windows se hace más grande, la cinta se hace más pequeño.

Observe cómo la cinta se hace más pequeño en cada pantalla:

Segoe UI 9 puntos (por defecto de Windows)

text alt

Segoe UI 12 puntos (lo que yo uso)

text alt

Segoe UI 16pt (lo uso del cliente)

text alt

Se puede ver en el momento en que llegamos a 16 puntos, el texto en la cinta es bastante difícil de leer.

Fondo

El usuario puede configurar Windows para utilizar su preferido tamaño de la fuente , por ejemplo:.

  • 8PT
  • 9pt
  • 12pt

y su preferido cara de la fuente , por ejemplo:.

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

pero el Marco de cinta de Windows por defecto usa una fuente que es no las preferencias del usuario.

Editar:. imagen se trasladó hasta la parte superior de las ardillas de captura atraídos por las cosas brillantes
Editar 2: Añadido otra imagen de colores, para conseguir un golpe
. Editar 3: Edición de conseguir un golpe
Editar 4: Adición de otra imagen diferente para obtener un bache


La cinta sí permite la personalización de los colores de la cinta.

El siguiente fragmento de código se utiliza para establecer la UI_PKEY_GlobalBackgroundColor de la cinta. En este caso yo uso un color que es el usuario que está actualmente seleccionar el esquema de color de 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;

Y ahora la cinta está ahora de color para que coincida con el esquema de color de Windows:

alt text

Pero no puedo encontrar la opción de cambiar el tipo de fuente / tamaño.

Nota:. Si bien la cinta de puede honor a la configuración de DPI del usuario, que no es este pregunta


Funciona en Outlook 2010

Puede ser útil tener en cuenta que la cinta de Outlook 2010 hace honor a las preferencias (menú) de fuente del usuario. Puede obtener fuente de menú del usuario llamando [SystemParametersInfo][6]:

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

ncm.lfMenuFont <---

9pt Outlook 2010

text alt

12pt Outlook 2010

text alt

12pt Outlook 2010

text alt

Aviso La cinta aumenta de tamaño con el tamaño de la fuente? (Lo cual, en estas imágenes redimensionadas, medios que la cinta no consigue perceptualmente más pequeño.)

Hay dos posibilidades:

  • Outlook 2010 sabe cómo ajustar el tamaño de fuente en el marco de la cinta de Windows
  • Outlook 2010 no utiliza el Marco de cinta de Windows

Windows 7 Paint no funciona

También es útil tener en cuenta que Windows Paint en Windows 7 hace no de honor del usuario preferencias de fuentes. Esto me lleva a creer que (mspaint) hace uso del Marco de cinta de Windows, y que el marco de cinta de Windows no admite establecer un tamaño de fuente. Si, si realmente has probado ser útiles, y leer todo el camino hasta aquí, se dará cuenta de que esto es la respuesta correcta: no es posible. Así que si quieres un libre 300 representante, que se agrega como una respuesta.

Editar: Cross-publicado en Microsoft

Palabras clave: Marco de cinta de Windows, cambiar tamaño de fuente, UIRibbon, tipo de letra, la interfaz de usuario de la cinta, ui escénica, cinta escénica, cinta fluidez, la interfaz de usuario fluida, el cambio de fuentes de Windows cinta, uiribbon.h

Microsoft tiene una serie de implementaciones cinta:


MS Paint no hace honor a la fuente menú de preferencias

Aquí hay una captura de pantalla mostrando mi configurado Windows 7 Menú de fuente Configuración de 12 puntos, con Mspaint visible, y Outlook 2010 visible para la comparación.

text alt


Ejemplo de código

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;

14pt Marco de cinta de Windows! = 14pt

Esta es una captura de pantalla con Windows menú de la fuente configurada para 14 puntos (en una máquina de 96 ppp). Outlook 2010 es de 14 puntos, Photoshop CS3 es de 14 puntos. La cinta es ... menos.

text alt

Ver también

¿Fue útil?

Solución

Con base en el comportamiento de Windows 7 de pintura, esto parece no ser posible. :)

Otros consejos

No estoy exactamente seguro .. Usted está utilizando el Marco de Windows cinta en Delphi y tengo este extraño comportamiento?

Me acabas de empezar a jugar con el marco, pero la cinta respeta mis preferencias.

TUIApp = class(TInterfacedObject, IUIApplication)
...
gApp: TUIApp;
uiFrame: IUIFramework;
...
  CoCreateInstance(CLSID_UIRibbonFramework, nil, CLSCTX_INPROC_SERVER, IUIFramework, uiFrame);

  if Succeeded(uiFrame.Initialize(Handle, gApp)) then
  begin
     if not Succeeded(uiFrame.LoadUI(GetModuleHandle(nil), PChar('SIMPLERIBBON_RIBBON')))then
        sleep(5);
  end;

Esto es todo lo que hago en mi proyecto de prueba.

Con 9 puntos: text alt

Y con 14 puntos: text alt

Tal vez cambiar la opción equivocada? He fijado el tamaño de fuente del elemento "Menú".

Si usted tiene más preguntas sólo pregunte ...


He acabo de comprobar Win7 pintura. Lo hace respetar las preferencias del usuario. Por lo tanto, supongo que hizo algo mal o realmente ha cambiado la opción equivocada.


Como solicitó la captura de pantalla: text alt

Se mira gustos hicimos lo mismo. Esto es bastante extraño ...

  

Si si realmente has intentado ser   útiles, y leer todo el camino hasta   aquí, se dará cuenta de que este es el   respuesta correcta: no es posible. Entonces   si quieres un libre 300 representante, se agrega   que como respuesta.

Ya que no puedo publicar eso como una respuesta (George llegó ahí primero :)), y ya que parece que necesitan desesperadamente algún tipo de solución, voy a publicar el solamente otra respuesta es útil o sugerencia que puedo dar a resolver su problema: utilizar un control de cinta diferente usted no dice por qué está usando esta aplicación Delphi en lugar de la propia, o incluso una de la otra Microsoft. queridos.

Hay dos opciones:

  • El incorporado Delphi TRibbon control. No he utilizado esto en ninguna de las aplicaciones publicadas públicamente, pero tengo en mis propios programas de pequeña / de prueba y está libre de errores, en algunos lugares. (He visto problemas de dibujo impares en la cosa barra de acceso directo en la barra de título, por ejemplo.) Este puede haber mejorado en Delphi XE . Es posible que adolece de un error similares . Sin embargo, se envía con Delphi, "libre" si tiene Delphi, código nativo, VCL, y siendo un componente VCL viene con la fuente para que pueda arreglar las cosas si es necesario.

  • El TMS cinta control. No he utilizado, pero he utilizado otro control TMS . Que el control es bueno, y sus correcciones de errores de apoyo rápidamente. (He tenido la confirmación de un fallo en un día, por lo que "inmediatamente" zonas horarias de conteo, y una nueva construcción lanzado en unos pocos días.)

Creo otros proveedores de componentes pueden hacer que los componentes de la cinta, y yo recuerdo haber leído de alguien haciendo una modificación SpTBXLib que contiene controles de la cinta, pero no he oído mucho acerca de ellos. Mi sugerencia es que utilizar el TMS cinta .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top