基于WTL 下无法创建 书签的问题与Style创建后无法使用的问题描述。希望相关技术人员能够重现一下。
我们公司使用的是自己基于WTL的轻量化的开发平台。也就是说使用 ActiveX需要使用 CAxWindow类激活控件,同事创建COM对象。
_window.reset(new CAtlControlProxyImpl<CAxWindow>(parent));
_window->createWidget();
LPOLESTR str = new WCHAR;
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("");//创建于 默认 的样式下。返回一个有效的Styles
但是这时使用 pStyle->PutFontName("宋体");后调用Apply。会引起崩溃。而且Style无法保存在样式对话框下。
关于设置 标签。使用VB是能够创建书签,同时在word中显示含有此书签的。
_FileClass->PutSelText("nononono");//输入选择的字符集
_FileClass->FieldInsert("------");//添加书签。
//这个时候添加取出的FieldData 是存在的,但是无法知道是以什么形式存储的。故个人觉得原因是 fieldData的数据导致无法保存。因为C++下使用OLE链接不同于Vb与C#;
但是在调用Save后无法保存,同样使用的*.docx的文件类型 回复 1楼liaojunhua的帖子
liaojunhua 您好,
很抱歉,由于我们没有 WTL 相应测试环境,所以无法重现您当前提出的问题。
TX for ActiveX 控件并没有在 WTL 平台进行过严格测试,我们需要咨询厂商控件是否支持该平台。
目前只能给出一些建议供您参考,新建测试工程抛开其他环境影响,仅测试 Style.Apply。保存问题如果不从数据库中取值填充,直接输入文本是否可以正常保存?
另外有一个疑问:FieldData 问题如果连接到了 OLE 数据库是不是就可以确定其数据类型了呢?或者“存储形式”具体指的是什么? 该问题已经通过其他方式处理。但是书签导出还是无法处理。目前使用MFC创建控件是可以使用书签导出的。VB例子也行。但是我们仍没有找到如何导出书签。
1. 如果直接输入文本是可以正常保存的。Style是通过其他方式处理的。
2.FieldData应该是以二进制 存储的,目前无法对其进行解析而已。目前书签相关的问题已经通过其他方式解决。 回复 3楼liaojunhua的帖子
好的,感谢您反馈问题结果。
目前还有什么问题没有解决吗?
页:
[1]