如何使我的dlg现代化? (如何修补Delphi7)
答案 0 :(得分:6)
对于Windows 7及更高版本,要显示的新对话框的违规部分是回调。以下是“Font Dialog Box”的引用:
如果在不创建自定义模板的情况下启用了挂钩过程,则 早期Windows版本的默认ChooseFont模板将是 加载。
您可以通过修改“dialogs.pas”的副本并将其放在当前项目的源文件夹中来消除钩子过程。
function TFontDialog.Execute: Boolean;
...
// Flags := Devices[FDevice] or (CF_INITTOLOGFONTSTRUCT or CF_ENABLEHOOK);
Flags := Devices[FDevice] or CF_INITTOLOGFONTSTRUCT;
...
// hWndOwner := Application.Handle;
hWndOwner := GetActiveWindow;
...
后一种修改用于在合理的位置显示对话框。禁用挂钩过程后,VCL将无法使对话框居中。您还将失去“应用”按钮功能和其他事件(OnShow / Close)。