在CHOOSECOLOR对话框中更改字体

7
我正在使用Windows公共控件CHOOSECOLOR对话框,但在Win 7上它看起来很突兀,因为它仍然使用“旧”的Tahoma字体。

ChooseColor Dialog

有没有比较简单的方法让它使用Segoe UI或其他字体?如果有影响的话,我正在使用Delphi/C++Builder...
1个回答

9
我认为改变默认字体不是一个好主意,但是当然可以做到:
function EnumChildProc(hWnd: HWND; lParam: LPARAM): LongBool; stdcall;
begin
  SendMessage(hWnd, WM_SETFONT, lParam, Integer(true));
  result := true;
end;

procedure TForm1.ColorDialogShow(Sender: TObject);
var
  dlg: TColorDialog;
begin
  if not (Sender is TColorDialog) then Exit;
  dlg := TColorDialog(Sender);

  SendMessage(dlg.Handle, WM_SETFONT, Self.Font.Handle, Integer(true));

  EnumChildWindows(dlg.Handle, @EnumChildProc, Self.Font.Handle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TColorDialog.Create(nil) do
    try
      OnShow := ColorDialogShow;
      Execute(Handle);
    finally
      Free;
    end;
end;

这将使用Form1.Font字体。 带有自定义字体的颜色对话框 尽管在这种情况下,我可能会认为这是可以接受的: 默认字体(Tahoma)的颜色对话框 Segoe UI字体的颜色对话框 Tahoma(默认)与Segoe UI
但是!有一些问题: 默认字体-没有问题的颜色对话框 自定义字体引起问题的颜色对话框 我认为最安全的做法是不要更改对话框的默认(预期)外观。然后,至少可以将任何缩放问题归咎于Microsoft...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接