我们公司使用的是自己基于WTL的轻量化的开发平台。
也就是说使用 ActiveX需要使用 CAxWindow类激活控件,同事创建COM对象。
_window.reset(new CAtlControlProxyImpl<CAxWindow>(parent));
_window->createWidget();
LPOLESTR str = new WCHAR[1024];
ProgIDFromCLSID(__uuidof(BW_TEXT:: TXTextControl), &str);
CString strID(str);
HRESULT hrs = _window->CreateControl(strID);
_window->QueryControl(__uuidof(BW_TEXT::_DTX4OLE), (void**)(&_FileClass));
window->setVisible(true);
进行如上操作后创建控件成功。
try
{
_FileClass->Load(GetBSTR(_strfile), 0, 13, TRUE);
}
catch (...)
{
RasiErro("文件已经打开,或者文件不存在。");
}
打开文件后。
BW_TEXT::IStylesPtr pStyles = _FileClass->GetStyles();
BW_TEXT::IStylePtr pStyle= _pStyles->Item("[Normal]");//创建于 默认 [Normal]的样式下。返回一个有效的Styles
但是这时使用 pStyle->utFontName("宋体");后调用Apply。会引起崩溃。而且Style无法保存在样式对话框下。
关于设置 标签。使用VB是能够创建书签,同时在word中显示含有此书签的。
_FileClass->utSelText("nononono");//输入选择的字符集
_FileClass->FieldInsert("------");//添加书签。
//这个时候添加取出的FieldData 是存在的,但是无法知道是以什么形式存储的。故个人觉得原因是 fieldData的数据导致无法保存。因为C++下使用OLE链接不同于Vb与C#;
但是在调用Save后无法保存,同样使用的*.docx的文件类型 |
|