[英]How to use A-links and A-keywords with CHM help file in Delphi XE?
A-links和A-keywords中的“A”代表“關聯”。 這是因為A-link關鍵字實際上不是關鍵字。 它們更像是鏈接或跳躍目標(在H&M中稱為錨點)。 它們永遠不會像索引關鍵字那樣對用戶可見。 它們被稱為“聯想”,因為它們不是絕對的目標。
如何在Delphi XE中通過A-keyword調用CHM幫助?
我在helpintfs中看不到任何支持。
我用D2006 / FPC嘗試過一次,並將結果提交給FPC:
你需要單位“htmlhelp”
http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/packages/winunits-base/src/htmlhelp.pp?view=co
並在該文件中執行一些ansi-> unicode轉換(例如將所有pchar更改為pansichar,使用native(u)int等替換所有pc(u)int)
此文件具有常量HH_ALINK_LOOKUP,afaik可用於查找alink和關鍵字。
這可以傳遞給htmlhelp函數。 下面的代碼來自Free Pascal並使用ansistrings,但它可能在Delphi中類似
{$apptype console}
Uses HTMLHelp;
var
keyword : ansistring;
HelpfileName : AnsiString;
htmltopic : AnsiString;
res : Integer;
ah : PHH_AKLINK ;
Begin
Helpfilename:='rtl.chm';
keyword:='Sysutils' ;
New(ah);
fillchar(ah^,sizeof(ah^),#0);
ah.cbstruct:=sizeof(tagHH_AKLINK);
ah.fReserved := FALSE ;
ah.pszKeywords :=pansichar(keyword);
ah.pszUrl := NIL ;
ah.pszMsgText :='Text succes' ;
ah.pszMsgTitle :='Text fail';
ah.pszWindow := NIL ;
ah.fIndexOnFail:= false;
Res:=HtmlHelpA(0,pansichar(helpfilename) ,HH_DISPLAY_INDEX,PTRUINT(PAnsiChar(Keyword)));
// keyword search seems to have same effect.
Res:=HtmlHelpA(0,pansichar(helpfilename) ,HH_ALINK_LOOKUP,PTRUINT(AH));
writeln(ah.pszkeywords);
writeln(ah.pszurl);
writeln(ah.pszmsgtext);
writeln(ah.pszmsgtitle);
writeln(ah.pszwindow);
writeln(res);
readln;
end.
Windows API函數HTMLHelp
可直接在Windows單元中使用。 您需要HH_ALINK_LOOKUP命令。
如果你正在使用HelpInfts的幫助系統,HtmlHelpViewer單元包含THtmlHelpViewer,它包含處理ALinks的各種方法 - 特別是LookupALink。 不幸的是,似乎沒有類型的文檔,所以你必須自己深入了解源代碼(這很簡單,所以你不應該有太多麻煩)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.