Изменение шрифта в диалоге CHOOSECOLOR
Я использую диалоговое окно CHOOSECOLOR общих элементов управления Windows, но в Win 7 он торчит как больной большой палец, так как он все еще использует "старый" шрифт Tahoma.
Есть ли довольно простой способ заставить его использовать пользовательский интерфейс Segoe или какой-либо другой шрифт?
Если это имеет значение, я использую Delphi/C++Builder...
1 ответ
Я не думаю, что это хорошая идея изменить шрифт по умолчанию, но, конечно, это выполнимо:
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
шрифт.
http://privat.rejbrand.se/ColorDialogWCustomFont.png
Тем не менее, в этом случае я мог бы просто найти это приемлемым:
http://privat.rejbrand.se/WCPDefTahoma.png http://privat.rejbrand.se/WCPSegoeUI.png
Tahoma (по умолчанию) против Segoe UI
Но! Есть проблемы, связанные:
http://privat.rejbrand.se/WCLNoFontIssue.png
Я думаю, что безопаснее всего не изменять внешний вид диалогового окна по умолчанию. Тогда, по крайней мере, вы можете обвинить Microsoft в любых проблемах масштабирования...