我需要找到< code >字体是什么。颜色,< code >字体。大小和< code >字体。Inno Setup 向导表单的名称
。Caption使用< code > gettextextendpoint 32 获取其(它是一个字符串)范围点。
请告诉我如何找到WizardForm的上述属性。(不是系统字体属性)。我想根据。我正在使用的皮肤。
我也想知道在知道这些字体信息后,如何使用Pascal脚本将向导窗口标题居中。
感谢提前。
WizardForm的窗口标题属性由ISSkin内部加载。DLL根据您的视觉样式皮肤。因此,如果在“控制面板”中的“高级外观设置”中用户配置了任何“窗口标题的系统度量”,例如:
窗口标题-字体名称Segoe UI
和字体大小10
加载指定的视觉样式时,所有这些都将被ISSKin.DLL覆盖,因为它在它们的. INI文件中具有不同的字体和字体大小配置,其由函数LoadSkin
加载,如下所示。
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
您在这里提供的.INI文件几乎包含了有关如何从存储在Skin文件中的资源(如Bitmpas)加载Skin的所有信息。
但是,您可以使用两种不同的选项使向导窗体标题居中。
使用资源黑客:
使用资源黑客,可以很容易地将皮肤的窗口标题(标题)对齐设置为中心。
1.打开您的视觉样式皮肤(。cjstyles或者。msstyles)文件,并查找名为< code>TEXTFILE的资源组。
2.展开它并根据ISSkin.dll默认加载的颜色方案查找.INI文件。在大多数情况下,如果您的系统字体大小为100%(默认值),则应为普通颜色方案。因此,单击INI文件,其名称中包含单词NORMAL,如下所示:
例如,如果蒙皮文件名为“优雅”。cjstyles,具有Normal配色方案的.INI文件应类似于NORMALELEGANCE_INI
或包含单词Normal
的内容。
3.在Resource Hacker附带的内部文本编辑器中打开此.INI文件,并找到行<code>窗口。标题如下所示:
4.并确保其Content的对齐
设置为Center
。如果默认不是,请将其更改为Center
。
现在,在皮肤被ISSkin.DLL加载后,向导的窗口标题应该居中。
注意:这种居中不准确,因为居中是在字幕左侧和最小化按钮之间进行的,所以即使这样居中,字幕仍然可能靠近左侧。
使用Pascal脚本[Code]部分:
您可以通过在Wizardform字幕的前面添加空格来居中。(但不推荐。)
像这样的代码将满足您的需求。
[Code]
Type
TSize = Record
cx, cy: Integer;
end;
function GetTextExtentPoint32(hdc: THandle; s: string; c: Integer; var Size: TSize): Boolean;
external 'GetTextExtentPoint32W@Gdi32.dll stdcall';
function GetDC(hWnd: THandle): THandle;
external 'GetDC@User32.dll stdcall';
function SelectObject(hdc: THandle; hgdiobj: THandle): THandle;
external 'SelectObject@Gdi32.dll stdcall';
function AlignStringToCenter(S: String; const FontName: String; const MaxWidth, FontSize: Integer): String;
var
SWidth, SX, NSWidth: Integer;
SFont, SHandle: THandle;
StringModifier: TNewStaticText;
StringDimensions: TSize;
SHandleEx: TForm;
begin
if S = '' then
RaiseException('The specified Caption is an empty String')
else begin
Try
SHandleEx := TForm.Create(nil);
StringModifier := TNewStaticText.Create(SHandleEx);
StringModifier.Font.Name := FontName;
StringModifier.Font.Size := FontSize;
StringModifier.Parent := SHandleEx;
SX := 0;
StringModifier.Caption := S;
SHandle := GetDC(StringModifier.Handle);
SFont := SelectObject(SHandle, StringModifier.Font.Handle);
GetTextExtentPoint32(SHandle, StringModifier.Caption, Length(StringModifier.Caption), StringDimensions);
SelectObject(SHandle, SFont);
SWidth := StringDimensions.cx;
Repeat
Insert(' ', S, SX);
StringModifier.Caption := S;
Result := S;
SHandle := GetDC(StringModifier.Handle);
SFont := SelectObject(SHandle, StringModifier.Font.Handle);
GetTextExtentPoint32(SHandle, StringModifier.Caption, Length(StringModifier.Caption), StringDimensions);
SelectObject(SHandle, SFont);
NSWidth := StringDimensions.cx;
SX := SX + 1;
Until (NSWidth - SWidth) >= (MaxWidth - NSWidth);
Finally
StringModifier.Caption := '';
StringModifier.Free;
SHandleEx.Free;
SHandleEx.Close;
end;
end;
end;
上面的代码不断地在您想要居中的字符串前面添加空格,直到它在您给定的最大字符串宽度内正确居中,并输出添加了空格的修改后的字符串。
注意:此处的MaxWidth
参数应该是您要将字符串居中的宽度。宽度高于您在此处指定的宽度的字符串无法正确居中。使用上述功能,不需要视觉样式皮肤来居中向导窗口标题。
用法:
如果您想使用此功能将向导窗口标题居中,请按如下方式使用:
如果不使用视觉样式外观:
[Code]
Const
SM_CYSIZEFRAME = 33;
SM_CXSMICON = 49;
function GetSystemMetrics(nIndex : Integer): Integer;
external 'GetSystemMetrics@User32 stdcall';
procedure InitializeWizard;
begin
{ MaxWidth = WizardForm.Width - 2 * (WizardForm.FrameWidth + WizardForm.SmallIconWidth + WizardForm.CaptionLeft + WizardForm.CaptionRight) }
WizardForm.Caption := AlignStringToCenter(WizardForm.Caption, 'Segoe UI', WizardForm.Width - (2 * (GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CXSMICON) + 10 + 10)), 9);
end;
如果使用视觉样式蒙皮:
[Code]
Const
SM_CYSIZEFRAME = 33;
SM_CXSMICON = 49;
function GetSystemMetrics(nIndex : Integer): Integer;
external 'GetSystemMetrics@User32 stdcall';
procedure InitializeWizard;
begin
{ MaxWidth = WizardForm.Width - 2 * (WizardForm.FrameWidth + WizardForm.SmallIconWidth + WizardForm.CaptionLeft + WizardForm.CaptionRight) }
WizardForm.Caption := AlignStringToCenter('Setup - {#MyAppName}', 'Window Title Font Name of your Visual Styles Skin', WizardForm.Width - (2 * (GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CXSMICON) + 10 + 10)), Window Title Font Size of your Visual Styles Skin);
end;
居中向导窗口标题:
但是,使用上述函数居中向导窗口标题(通过添加空格来破解它)会导致 Windows 任务栏工具提示中的以下不良影响:
注意:WizardForm。如果使用视觉样式外观,则CaptionLeft和CaptionRight应随视觉样式外观的左侧标题边距的大小而变化。
我认为这是不可能的。
窗口标题由ISSkin DLL自定义绘制。因此,Windows不知道字体大小,因此无法使用Windows API。
ISSkin不导出任何函数来检索这些信息。
颜色 主导颜色 灰阶 字体 字体字号 图标 气泡菜单 组件内容 基础形态 容器 操作选项 选择浮层 顶部浮层 底部浮层 侧边浮层 示例 布局 标签选项 <!-- # 顶部导航栏 原生顶部导航栏 示例 个性定制 示例 --> Toast 单行展示 双行展示 状态提示 Dialog 弹窗属性 页面示例 Snackbar <!-- # 结果页面 布局 页面示例 组成结构 --> 布局 页面示例 类型 页
这是我的代码。 当它读到。docx文件它有时会返回-1的字体大小和null的字体系列。 我知道这是因为它们是默认值,但我不想要-1和null,我只想要那个默认值的名称。 我怎么读呢?
在CSS中,通过 font-size属性来设置元素中所包含文本的字体大小。如果一个元素没有显式定义font-size属性,则会自动继承父元素的 font-size属性的计算结果。 定义 font-size 时,可以使用预定义关键字、绝对尺寸、相对尺寸: 1)预定义关键字 预定义关键字有 xx-small、x-small、small、medium、large、x-large、xx-large,尺寸按
增加字体大小的最佳方法是什么,使其占据整个屏幕的宽度,或者更确切地说是视图的宽度?gumroad使用的一个很好的例子是:https://gumroad.com/然而,他们似乎将其用作图像而非普通文本,是否可以仅使用普通文本?
本文向大家介绍如何更改placeholder的字体颜色和大小?相关面试题,主要包含被问及如何更改placeholder的字体颜色和大小?时的应答技巧和注意事项,需要的朋友参考一下
我需要将给定HTML的字体家族和字体大小更改为特定的字体家族和大小。(例如:Times New Romen,尺寸:12)你知道如何使用Htmlagilitypack来完成吗? 字体大小可以在给定的HTML中以多种方式定义。例如:使用,也使用样式标记。因此,我需要改变所有特定的字体大小。