我正在使用 Windows 常用控件CHOOSECOLOR对话框,但在 Win 7 上它像拇指酸痛一样突出,因为它仍然使用“旧”Tahoma 字体。
有没有一种相当简单的方法让它使用 Segoe UI 或其他字体?
如果重要的话,我正在使用 Delphi/C++Builder ...
我正在使用 Windows 常用控件CHOOSECOLOR对话框,但在 Win 7 上它像拇指酸痛一样突出,因为它仍然使用“旧”Tahoma 字体。
有没有一种相当简单的方法让它使用 Segoe UI 或其他字体?
如果重要的话,我正在使用 Delphi/C++Builder ...
我认为更改默认字体不是一个好主意,但可以肯定的是:
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
但!涉及的问题有:
我认为,最安全的做法是不要更改对话框的默认(预期)外观。然后,至少,您可以将任何扩展问题归咎于微软......