在C++ Builder中使用DHTMLEdit控件的几个难题(200分)

  • 主题发起人 主题发起人 yb33
  • 开始时间 开始时间
Y

yb33

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用DHTMLEdit控件做一个简单的HTML编辑程序,遇到下面几个问题,
想了很多办法,查了很多地方,都没解决,向各位请教。
我用的是C++Builder6,找不到C++Builder的例子,Delphi的例子搬到C++Builder
中有一些问题,下面是在C++Builder中出的问题,Delphi中钧正常:
1.不能响应剪切、复制,能粘贴。。
2.DHTMLEdit->LoadDocument(DocPathName, ShowOpenDlg);
没反映,
好像没执行一样。因为HTML文件中会嵌一些图片,包含路径信息,
所以用DHTMLEdit->DocumentHTML比较麻烦。
3.在DHTMLEditDisplayChanged事件中获取段落格式、字体、字体大小钧会出错
DHTMLEdit->ExecCommand(DECMD_GETBLOCKFMT, OLECMDEXECOPT_DONTPROMPTUSER,EmptyParam)
DHTMLEdit->ExecCommand(DECMD_GETFONTNAME, OLECMDEXECOPT_DONTPROMPTUSER,NULL);
DHTMLEdit->ExecCommand(DECMD_GETFONTSIZE, OLECMDEXECOPT_DONTPROMPTUSER,VAR);
我尝试过在C++Builder中直接编译pas文件,能通过,但关闭时出错(写无效内存) 。
还尝试过在Delphi中做成控件,到C++Builder中用,还是老问题,一关闭就出错。
用Delphi做成动态库,在C++Builder中调用,想传递TForm*参数,不行。
我推测问题出在OleVariant、ExecCommand,
对于OleVariant类型,C++Builder与Delphi的内存管理机制有些不一样,但具体怎么解决呢?
那位仁兄有这方面的经验,请指教。

 
要进行OLE的初始化,Delphi 中是这样的。
//////////////////单元文件最后加上以下的初始化
initialization
oleinitialize(nil);
finalization
oleuninitialize;
end.

以上是API,C也类似
 
最后还是用Delphi做成动态库
 
接受答案了.
 
后退
顶部