如果用 CF_TEXT 格式将 HTML 格式的文本复制到剪贴簿,那么在 Word 等软件中粘贴得到
的将是大量的 HTML 标签,而不是带格式的文本。因此,你需要在剪贴簿中注册“HTML
格式”,并用该格式复制 HTML 文本到剪贴簿中。此外,你还要注意复制到 HTML 格式剪
贴簿的文本的格式。
以下代码帮助你准备恰当的格式:
function SetHTMLFormat(HTMLStr: string): string;
const
CrLf = #13#10;
begin
Result := ’Version:0.9’ + CrLf;
Result := Result + ’StartHTML:-1’ + CrLf;
Result := Result + ’EndHTML:-1’ + CrLf;
Result := Result + ’StartFragment:000081’ + CrLf;
Result := Result + ’EndFragment:******’ + CrLf;
Result := Result + HTMLStr + CrLf;
Result := StringReplace(Result, ’******’,
Format(’%.6d’, [Length(Result)]), []);
end;
以下代码实现在剪贴簿中同时放入无格式文本和 HTML 格式文本:
procedure CopyToClipBoard(const str: string; const hStr: string = ’’);
var
gMem: HGLOBAL;
pStr: PChar;
Strings: array[0..1] of string;
Formats: array[0..1] of UINT;
i: Integer;
begin
gMem := 0;
Win32Check(OpenClipBoard(0));
try
Strings[0] := SetHTMLFormat(hStr);
Strings[1] := str;
Formats[0] := RegisterClipboardFormat(’HTML Format’);
Formats[1] := CF_TEXT;
Win32Check(EmptyClipBoard);
for i := 0 to High(Strings) do
begin
if Strings[i] = ’’ then Continue;