WizardForm의 창 제목 속성은 Visual Styles Skin에 따라 ISSkin.DLL에 의해 내부적으로로드됩니다. 사람들이 ISSKin.DLL에 의해 무시되는 모든 글꼴 이름 Segoe UI
및 글꼴 크기 10
-
창 제목 : 창 제목 사용자에 대한 모든 시스템 메트릭이 있다면 그래서, 같은 제어판에서 고급 모양 설정 구성 지정된 비주얼 스타일을로드 할 때 .INI 파일에 다른 글꼴 및 글꼴 크기 구성이 있으므로 아래에 표시된 것처럼 LoadSkin
함수에 의해로드됩니다.
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
.INI은 여기에서 제공하는 스킨은 스킨 파일에 저장 Bitmpas 같은 자원에서로드하는 것입니다 방법에 대한 거의 모든 정보를 가지고있는 파일.
그러나 두 가지 옵션을 사용하여 WizardForm Caption을 가운데에 배치 할 수 있습니다.
리소스 해커 사용 : 리소스 해커를 사용
을 매우 쉽게 센터로 피부의 창 제목 (캡션) 정렬을 설정할 수 있습니다.
1. 리소스 해커를 사용하여 Visual Styles Skin (.cjstyles 또는 .msstyles) 파일을 열고 TEXTFILE
이라는 리소스 그룹을 찾습니다.
2. 확장 및 ISSkin.dll에서 기본적으로로드되는 색 구성표에 따라 .INI 파일을 찾습니다. 대부분의 상황에서 시스템 글꼴 크기가 100 % (기본값)이면 일반 색 구성표 여야합니다.
예를 들어, 당신의 피부 파일 이름이 Elegance.cjstyles
경우, .INI 정상 색상으로 파일을 포함 NORMALELEGANCE_INI
또는 무언가 같이해야한다 : 아래 그림 같은 이름에 NORMAL 단어를 가지고있는 .INI 파일을 클릭 단어 NORMAL
.
3.Open 내부 텍스트 편집기에서이 .INI 파일은 리소스 해커와 함께 제공 라인 Window.Caption
을 찾을 등은 다음과 같습니다 :
4.And 것은 그 ContentAlignment
로 설정되어 있는지 확인 Center
. 기본적으로 없으면 Center
으로 변경하십시오.
이제 마법사의 창 제목은 스킨이 ISSkin.DLL에 의해로드 된 후 가운데에 위치해야합니다.
참고 : 센터링이 캡션 왼쪽과 최소화 단추 사이에서 이루어지기 때문에이 센터링은 정확하지 않으므로 캡션은 이런 식으로 센터링 한 후에도 여전히 왼쪽 근처에있을 수 있습니다.
사용 파스칼 스크립트 [코드] 제 :.
당신은 전면에 공백을 추가하여 WizardForm 캡션을 중심으로 (그러나 권장하지 않습니다.) 수있는이 뜻을 같이
강령 당신이 필요로하는 것을하십시오. 코드 위
[Code]
Type
TSize = Record
cx, cy: Integer;
end;
function GetTextExtentPoint32(hdc: THandle; s: string; c: Integer; var Size: TSize): Boolean;
external '[email protected] stdcall';
function GetDC(hWnd: THandle): THandle;
external '[email protected] stdcall';
function SelectObject(hdc: THandle; hgdiobj: THandle): THandle;
external '[email protected] 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 '[email protected] 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;
을
비주얼 스타일 스킨을 사용하는 경우 :
,961,933,210
중심 마법사 윈도우 제목 :
: 기능 이상 사용 마법사 윈도우 제목 (공간을 추가하여 해킹)을 중심 그러나
는 윈도우 표시 줄 툴팁 다음 악영향을 야기
참고 : WizardForm.비주얼 스타일 스킨을 사용하는 경우 CaptionLeft 및 CaptionRight는 비주얼 스타일 스킨의 왼쪽 캡션 여백의 크기에 따라 달라집니다.
나는 이것을 위해 무엇이 필요한지 이해하지 못합니다. 설명 할 수 있니? –
Windows는 자막 중심 지정을 지원하지 않기 때문에 현재의 글꼴 이름과 크기에 따라 WizardForm.Caption에서 공간의 너비를 계산하고 원하는 자막 앞에 공백을 자동으로 추가하여 가운데에 배치하려고합니다. :-( – Blueeyes789