Windows Ribbon Framework: como alterar a face e o tamanho da fonte?
Como você altera a face e o tamanho da fonte usados peloMoldura da fita do Windowsdo UIRibbon?
A fonte usada pela faixa de opções não corresponde à fonte escolhida pelo usuário como suas preferências do Windows - que é a preferência que meu aplicativo usa. Isso significa que, conforme a fonte do Windows aumenta, a faixa de opções fica menor.
Observe como a faixa de opções fica menor em cada captura de tela:
Segoe UI 9pt (padrão do Windows)Segoe UI 12pt (o que eu uso)Segoe UI 16pt (qual o uso do cliente)Você pode ver quando chegamos aos 16 pontos, o texto na faixa de opções é bastante difícil de ler.
fundoO usuário pode configurar o Windows para usar suas preferênciastamanho da fonte, por exemplo.:
8pt9pt12pte seus preferidosTipo de letra, por exemplo.:
MS Sans SerifMicrosoft Sans SerifTahomaUI do SegoeCalibrimas oEstrutura de faixa de opções do Windows por padrão, usa uma fonte que énão a preferência do usuário.
Editar: Movido a imagem para cima para pegar esquilos atraídos por coisas brilhantes.
Edição 2: Adicionada outra imagem colorida, para obter uma colisão.
Edição 3: Edição para obter um aumento
Edição 4: Adicionando outra imagem diferente para obter um solavanco
A faixa de opções permite personalizar ocores da fita.
O seguinte fragmento de código é usado para definir oUI_PKEY_GlobalBackgroundColor
da fita. Nesse caso, eu uso uma cor que é o esquema de cores Aero atualmente selecionado pelo usuário:
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 agora a fita agora está colorida para corresponder ao esquema de cores do Windows:
texto alternativo http://i44.tinypic.com/287dufp.jpg
Mas não consigo encontrar a opção de alterar a face / tamanho da fonte.
Nota: Enquanto a fitamaio honrar as configurações de DPI do usuário, isso não éesta Pergunta, questão.
Funciona no Outlook 2010Pode ser útil observar que a faixa de opções do Outlook 2010 respeita as preferências de fonte do usuário (menu). Você pode obter a fonte do menu do usuário chamando[SystemParametersInfo][6]
:
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));
ncm.lfMenuFont <---
9pt Outlook 201012pt Outlook 201012pt Outlook 2010Observe que a faixa de opções aumenta de tamanho com o tamanho da fonte? (O que, nessas capturas de tela redimensionadas, significa que a faixa de opções não fica perceptivelmente menor.)
Existem duas possibilidades:
O Outlook 2010 sabe como ajustar o tamanho da fonte no Windows Ribbon FrameworkO Outlook 2010 não usa o Windows Ribbon FrameworkO Windows 7 Paint não funcionaTambém é útil observar que o Windows Paint no Windows 7 nãonão honre as preferências de fonte do usuário. Isso me leva a acreditar que ele (mspaint) usa o Windows Ribbon Framework e que o Windows Ribbon Framework não suporta a configuração de um tamanho de fonte. Se você realmente tentou ser útil e leu até aqui, perceberá que esta é a resposta correta: não é possível. Portanto, se você quiser um representante de 300 grátis, adicione-o como resposta.
Editar: Postada na Microsoft
Palavras-chave: Windows Ribbon Framework, altere o tamanho da fonte, UIRibbon, face da fonte, ui da fita, ui cênica, fita cênica, fita cênica, fita fluente, interface do usuário fluente, altere a faixa de opções das janelas da fonte, uiribbon.h
A Microsoft possui várias implementações da faixa de opções:
Estrutura de faixa de opções do Windows - nativoCMFCRibbonBar for MFC - MFCFaixa de opções (WPF) - WPFribbon.codeplex.com - WinForms (não suportado)O MS Paint não respeita a preferência de fonte do menuAqui está uma captura de tela mostrando meu Windows 7 configuradoTipo de letra do menu configuração de 12pt, com msPaint visível e Outlook 2010 visível para comparação.
Código de amostratype
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! = 14ptAqui está uma captura de tela com o WindowsCardápio fonte configurada para 14pt (em uma máquina de 96 dpi). O Outlook 2010 é 14pt, o Photoshop CS3 é 14pt. A fita é ... menos.
Veja tambémhttp://i.stack.imgur.com/VseEN.pnghttp://i42.tinypic.com/15x0pj5.jpg