不久前,我在 c++ 中开发了一个基于 mshtml 的编辑器,我做了类似以下代码的操作来获取当前选择的文本样式。
CComQIPtr<IOleCommandTarget> spCmdTarg(pDispDoc);
if (pStyle && spCmdTarg)
{
const ULONG uNumCmnds = 4;
OLECMD arrCmnds[uNumCmnds];
arrCmnds[0].cmdID = IDM_BOLD;
arrCmnds[1].cmdID = IDM_ITALIC;
arrCmnds[2].cmdID = IDM_UNDERLINE;
arrCmnds[3].cmdID = IDM_STRIKETHROUGH;
if ( SUCCEEDED(spCmdTarg->QueryStatus(&CGID_MSHTML, uNumCmnds, arrCmnds, NULL)) )
{
pStyle->SetBold(arrCmnds[0].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
pStyle->SetItalic(arrCmnds[1].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
pStyle->SetUnderline(arrCmnds[2].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
pStyle->SetStrikeThrough(arrCmnds[3].cmdf & Shdocvw_tlb::OLECMDF_LATCHED);
}
}
我不太确定如何在 c# 中翻译此代码以及 mshtml 的 interlop 层上可用的内容,但希望这可以帮助您从某个地方开始。