Domanda

Come si fa a cambiare il tipo di carattere e dimensione del carattere utilizzato dal barra multifunzione di Windows Framwork 's UIRibbon?

Il font utilizzato dal nastro non corrisponde il tipo di carattere che l'utente ha scelto come loro preferenze di Windows - che è la preferenza i miei usi applicativi. Ciò significa che, come il tipo di carattere in Windows diventa più grande, il nastro diventa più piccolo.

Si noti come il nastro diventa più piccolo in ogni screenshot:

Segoe UI 9pt (impostazione predefinita di Windows)

alt text

Segoe UI 12pt (quello che io uso)

alt text

Segoe UI 16pt (quello dei clienti di utilizzo)

alt text

È possibile vedere per il momento si arriva a 16pt, il testo sul nastro è abbastanza difficile da leggere.

Sfondo

L'utente può configurare Windows per utilizzare il loro preferito dimensione del carattere , per esempio:.

  • 8pt
  • 9pt
  • 12pt

e il loro preferito font face , per esempio:.

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

ma di Windows Ribbon Framework per default utilizza un tipo di carattere che è non preferenze dell'utente.

Modifica:. immagine salito in alto a scoiattoli cattura attratti da cose luccicanti
Modifica 2: Aggiunto un altro quadro colorato, per ottenere un urto
. Modifica 3: Modifica per ottenere un urto
Modifica 4: Aggiunta di un altro quadro diverso per ottenere un urto


Il nastro non permette la personalizzazione dei colori del nastro.

Il frammento di codice è utilizzato per impostare la UI_PKEY_GlobalBackgroundColor del nastro. In questo caso io uso un colore che è l'utente che sta attualmente selezionare combinazione di colori 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;

E ora il nastro è ora di colore per abbinare la combinazione di colori di Windows:

alt text

Ma non riesco a trovare l'opzione di cambiare il tipo di carattere / dimensione.

Nota. Mentre il nastro possono onorare impostazioni DPI degli utenti, che non è questo questione


Funziona in Outlook 2010

Potrebbe essere utile notare che il nastro di Outlook 2010 fa onore preferenze (menu) dei caratteri dell'utente. È possibile ottenere carattere menù l'utente chiamando [SystemParametersInfo][6]:

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

ncm.lfMenuFont <---

9pt Outlook 2010

alt text

12pt Outlook 2010

alt text

12pt Outlook 2010

alt text

Avviso del nastro aumenta di dimensioni con la dimensione del carattere? (Il che, in questi screenshot ridimensionate, significa che il nastro non ottiene percettivamente più piccolo.)

Ci sono due possibilità:

  • Outlook 2010 sa come regolare la dimensione del carattere nel quadro Ribbon di Windows
  • Outlook 2010 non utilizza il nastro di Windows quadro

Windows 7 Paint non funziona

E 'anche utile notare che Windows Paint in Windows 7 ha non onore preferenze di carattere dell'utente. Questo mi porta a credere che esso (mspaint) non utilizzare il quadro Ribbon di Windows, e che il quadro Ribbon di Windows non supporta l'impostazione una dimensione di carattere. Se se hai davvero cercato di essere disponibile, e leggere tutta la strada fino a qui, vi renderete conto questo è la risposta corretta: non è possibile. Quindi, se volete un libero 300 rappresentante, si aggiunge che, come una risposta.

Modifica Cross-postato a Microsoft

Parole chiave: di Windows Ribbon Framework, modificare le dimensioni dei caratteri, UIRibbon, tipo di carattere, nastro ui, ui scenica, nastro scenica, nastro fluente, ui fluente, il cambiamento dei caratteri finestre a nastro, uiribbon.h

Microsoft ha un certo numero di implementazioni nastro:


MS Paint non onore carattere menù preferenza

Ecco uno screenshot che mostra il mio configurato Windows 7 Menu Font l'impostazione di 12pt, con MSPaint visibile e Outlook 2010 visibile per il confronto.

alt text


Esempio di codice

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 quadro Ribbon di Windows! = 14pt

Ecco uno screenshot con Windows Menu di carattere configurato per 14pt (su una macchina 96 dpi). Outlook 2010 è 14pt, Photoshop CS3 è 14pt. Il nastro è ... meno.

alt text

Vedi anche

È stato utile?

Soluzione

Sulla base del comportamento di Windows 7 Paint, questo sembra non essere possibile. :)

Altri suggerimenti

Non sono esattamente sicuro .. Si sta utilizzando la barra multifunzione di Windows quadro in Delphi e ottenuto questo strano comportamento?

Ho appena iniziato a giocare con il quadro ma il nastro rispetta le mie preferenze.

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;

Questo è tutto quello che faccio nel mio progetto di test.

Con 9pt: alt text

E con 14pt: alt text

Forse si modifica l'opzione sbagliata? Ho impostato la dimensione del font dell'elemento "Menu".

Se avete altre domande basta chiedere ...


Ho appena controllato Win7 Paint. Lo fa rispettare le preferenze degli utenti. Quindi credo che hai fatto qualcosa di sbagliato o veramente cambiato l'opzione sbagliata.


Come richiesto lo screenshot: alt text

Sembra piace questo abbiamo fatto lo stesso. Questo è abbastanza strano ...

  

Se se hai davvero cercato di essere   disponibile, e leggere tutta la strada fino a   Qui, vi renderete conto questo è il   risposta corretta: non è possibile. Così   se si desidera un libero 300 rappresentante, si aggiunge   che come una risposta.

Poiché non posso post che come una risposta (George ottenuto in là prima :)), e dal momento che ti sembra di bisogno disperatamente qualche tipo di soluzione, ho intenzione di pubblicare il solo altra risposta utile o suggerimento che posso dare per risolvere il problema: utilizzare un controllo nastro diverso non dici il motivo per cui si sta utilizzando questa implementazione, invece di Delphi la propria, o anche uno degli altri Microsoft. quelli.

Due opzioni sono:

Credo che altri fornitori di componenti possono realizzare componenti a nastro, e io ricordo di aver letto di qualcuno fare una modifica SpTBXLib contenente controlli della barra multifunzione, ma non ho sentito molto su di loro. Il mio suggerimento è quello di usare il TMS nastro .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top