给richedit富文本框插入图片,至少有两种方法,一种是调用ImageOleCtrl.dll插入ole对象,另一种是从rtf富文本文件中读入文件流显示内容。
第一种方法,请下载 http://www.jianma123.com/download/RichEditDemo(WTL版).rar 内有C++源码和成品示例,需要自己研究如何用aardio插入ole对象(也许可以参考import win.ole;这个库?)
第二种方法,测试时,先在桌面放一个图片 1.jpg ,然后运行下面的下面的源码,会在桌面生成一个rtf文件,然后读入图文内容到富文本框richedit显示。有群友用win8、win10运行测试成功,但我本人用 win7 32 测试失败,原因未深入研究。有懂的朋友欢迎回贴指正。
import win.ui;
/*DSG{{*/
var winform = win.form(text="简码编程 jianma123.com";right=543;bottom=415)
winform.add(
button={cls="button";text="button";left=56;top=344;right=168;bottom=384;z=2};
button2={cls="button";text="button2";left=200;top=344;right=312;bottom=384;z=3};
richedit={cls="richedit";text="richedit";left=16;top=16;right=528;bottom=328;edge=1;multiline=1;z=1}
)
/*}}*/
import crypt.bin;
import string.builder;
import console;
winform.button.oncommand = function(id,event){
var bs = string.builder()
var str=string.loadBuffer("C:\Users\Administrator\Desktop\1.jpg");
restr=string.replace(crypt.bin.encodeHex(str)," ","")
bs.append("{\rtf1 {\pict\jpegblip0")
bs.append(restr)
bs.append("}}");
var ok=string.save("C:\Users\Administrator\Desktop\tmp.rtf",tostring(bs))
while(ok){
var file = io.open(io.fullpath("C:\Users\Administrator\Desktop\tmp.rtf"),"r+b");
winform.richedit.streamIn( ,function(format,buf,len){
return 0,file.readBuffer(buf,len):0;
} )
file.close()
break ;
}
}
winform.button2.oncommand = function(id,event){
//winform.msgbox( winform.button2.text );
var file = io.open(io.fullpath("C:\Users\Administrator\Desktop\tmp.rtf"),"r+b");
console.dump(file)
winform.richedit.streamIn( ,function(format,buf,len){
console.dump(file.readBuffer(buf,len))
return 0,file.readBuffer(buf,len):0;
} )
file.close()
}
winform.show()
win.loopMessage();
感谢群友:星星