Hallo Chris, Hallo Achim!
Vielen Dank für die Denkansätze!
Es funktioniert jetzt!
Diese "Zeigergeschichten" sind mir (leider) immer noch ein Graus
![Shocked](images/smilies/icon_eek.gif)
Da war eure Unterstützung und das Gefühl nicht allein zu sein, schon sehr wertvoll! Für die Nachwelt hier noch mal beide Prozeduren in einer leicht verallgemeinerten Form ...
Delphi-Quellcode:
procedure ~~.SetHtmlWindowPos(NewCaption:String;
Top,Left,Width,Height:Integer); // Aufruf unmittelbar VOR
var WT : HH_WinType; // Hilfeaufruf, sonst wird
begin // Fenster an vordefinierter
fillchar(WT,SizeOf(WT),0); // Position geöffnet
with WT do begin
cbStruct :=SizeOf(WT);
pszType :=PChar('MainWindow'); // << Name des FensterTyps an DIESER Stelle übergeben!
fsValidMembers:=HHWin_Param_Rect; // NICHT im Aufruf von HtmlHelp()
pszCaption :=PChar(NewCaption);
rcWindowPos.Top :=Top;
rcWindowPos.Left :=Left;
rcWindowPos.Right :=Left+Width;
rcWindowPos.Bottom:=Top+Height;
end;
HtmlHelp(0,PChar(Application.HelpFile),HH_Set_Win_Type,DWord(@WT));
end;
function ~~.GetHtmlWindowPos(var iLeft,
iTop,
iWidth,
iHeight:Integer):Boolean; // Ermittelt NUR die aktuell
var WT : HH_WinType; // gültige "Startposition/-größe"
pWT : ^HH_WinType; // Werte eines von Anwender
Hnd : HWND; // verschobenen/in der Größe veränderten
begin // Fensters werden NICHT zurückgeliefert!
Result:=false;
pWT:=@WT;
fillchar(pWT^,SizeOf(pWT^),0);
pWT^.cbStruct:=SizeOf(pWT^);
// v- Name des FensterTyps an DIESER Stelle übergeben!
Hnd:=HtmlHelp(0,PChar(Application.HelpFile+'>MainWindow'),HH_Get_Win_Type,DWord(@pWT));
if Hnd>0 then
with pWT^.rcWindowPos do begin
iLeft :=Left;
iTop :=Top;
iWidth :=succ(Right-Left);
iHeight:=succ(Bottom-Top);
Result:=true;
end;
end;
Gruß Ralph
//edit: Tippfehler beseitigt