怎样实现在文本框里显示图片

likeyrain 2009-02-25 02:47:19
大家好:
请教一下,怎样在文本框里显示图片啊?就象QQ聊天的那个界面那样
...全文
539 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ai2015WER 2010-04-02
  • 打赏
  • 举报
回复
dsssssssssssssssssssssss
OSHAMA 2009-02-26
  • 打赏
  • 举报
回复
HDC DC=GetDC(this->RichEdit1->Handle);
BitBlt(DC,0,0,this->Image1->Width,this->Image1->Height,this->Image1->Picture->Bitmap->Canvas->Handle,0,0,SRCCOPY);
likeyrain 2009-02-26
  • 打赏
  • 举报
回复
经查BCB2007用的还是1.0的
手上有3.0 For Delphi 的,和知道怎样才能装到BCB上用?
或者大家能不能发我个For BCB的?
likeyrain 2009-02-26
  • 打赏
  • 举报
回复
经查BCB2007用的还是1.0的
手上有3.0 For Delphi 的,和知道怎样才能装到BCB上用?
或者大家能不能发我个For BCB的?
likeyrain 2009-02-26
  • 打赏
  • 举报
回复
手上有一个RichEdit3不过是Delphi的
怎样才能装到BCB2007上用啊?
纯冰糖 2009-02-26
  • 打赏
  • 举报
回复
我倒是有Delphi的例子,但太长了,我没写写测试过。
likeyrain 2009-02-26
  • 打赏
  • 举报
回复
那我应该怎样去判定它的版本啊?我用的是BCB 2007。
fairchild811 2009-02-26
  • 打赏
  • 举报
回复
另外,添头文件

#include "richedit.h"
#include "ole2.h"
#include "richole.h"

使用ole实现,但是不能显示jpeg,即使加上了include <jpeg.hpp> using namespace std也不能

另外,如果双击插入的图片,会调用paint打开.
fairchild811 2009-02-26
  • 打赏
  • 举报
回复
void __fastcall InsertBmpToRich(TRichEdit *re, wchar_t* wstrBmpFile)
{
IRichEditOle *RichOle;
SendMessage(re->Handle, EM_GETOLEINTERFACE, 0, int(&RichOle));

ILockBytes *FLockBytes;
CreateILockBytesOnHGlobal(0,1,&FLockBytes);

IStorage *FStorage;
StgCreateDocfileOnILockBytes(FLockBytes, STGM_SHARE_EXCLUSIVE|
STGM_CREATE|STGM_READWRITE,0, &FStorage);

TFormatEtc FormatEtc;
FormatEtc.cfFormat = 0;
FormatEtc.ptd = NULL;
FormatEtc.dwAspect = DVASPECT_CONTENT;
FormatEtc.lindex = -1;
FormatEtc.tymed = TYMED_NULL;

IOleObject *FOle;
OleCreateFromFile(GUID_NULL, wstrBmpFile, ::IID_IOleObject,
0, &FormatEtc, NULL, FStorage, (void**)&FOle);
OleSetContainedObject(FOle, true);

REOBJECT ReObject;
ZeroMemory(&ReObject, sizeof(REOBJECT));
ReObject.cbStruct = sizeof(REOBJECT);
CLSID xt;
FOle->GetUserClassID(&xt);
ReObject.clsid = xt;
ReObject.cp = REO_CP_SELECTION;
ReObject.dvaspect = DVASPECT_CONTENT;
ReObject.dwFlags = REO_STATIC|REO_BELOWBASELINE;
ReObject.dwUser = 0;
ReObject.poleobj = FOle;

IOleClientSite *FClientSite;
RichOle->GetClientSite(&FClientSite);
ReObject.polesite = FClientSite;
ReObject.pstg = FStorage;
ReObject.sizel.cx = 0;
ReObject.sizel.cy = 0;

RichOle->InsertObject(&ReObject);
}


添加一个按钮,使用:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute() == ID_OK)
{
InsertBmpToRich(RichEdit1, OpenDialog1->FileName.w_str());
}
}
likeyrain 2009-02-26
  • 打赏
  • 举报
回复
好象不行吧?要RichEdit2.0以上才可以?
fairchild811 2009-02-25
  • 打赏
  • 举报
回复
RichEdit,BCB6是1.0,cb2007.2009应该不是1.0吧,不过没用过
likeyrain 2009-02-25
  • 打赏
  • 举报
回复
兄弟能不能提供下载啊?
网上好象搜不到。。。。。。。
我不懂电脑 2009-02-25
  • 打赏
  • 举报
回复
用richedit可以插入图片,不过要2.0版的bcb是1.0版的。

552

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧