Текущий архив: 2008.02.03;
Скачать: CL | DM;
ВнизRichEdit и OLE. Найти похожие ветки
← →
VAD*Anti Gopn!k © (2008-01-06 23:53) [0]Доброе время суток.
Вставляю картинку в RichEdit:...
procedure TImageDataObject.InsertBitmap(Wnd: HWND; Bitmap: HBITMAP);
var
OleClientSite: IOleClientSite;
RichEditOLE: IRichEditOLE;
Storage: IStorage;
LockBytes: ILockBytes;
OleObject: IOleObject;
ReObject: TReobject;
clsid: TGUID;
begin
if (SendMessage(wnd, EM_GETOLEINTERFACE, 0, Cardinal(@RichEditOle)) = 0) then Exit;
FBmp := CopyImage(Bitmap, IMAGE_BITMAP, 0, 0, 0);
if FBmp = 0 then Exit;
try
SetBitmap(Fbmp);
RichEditOle.GetClientSite(OleClientSite);
if (OleClientSite = nil) then Exit;
CreateILockBytesOnHGlobal(0, True, LockBytes);
if (LockBytes = nil) then exit;
if (StgCreateDocfileOnILockBytes(LockBytes, STGM_SHARE_EXCLUSIVE or STGM_CREATE or STGM_READWRITE, 0, Storage) <> S_OK) then
begin
LockBytes._Release;
Exit;
end;
if (Storage = nil) then exit;
OleObject := GetOleObject(OleClientSite, Storage);
if (OleObject = nil) then exit;
OleSetContainedObject(OleObject, TRUE);
ZeroMemory(@reobject, SizeOf(TReobject));
reobject.cbStruct := SizeOf(TReobject);
OleObject.GetUserClassID(clsid);
reobject.clsid := clsid;
reobject.cp := REO_CP_SELECTION;
reobject.dvaspect := DVASPECT_CONTENT;
reobject.poleobj := OleObject;
reobject.polesite := OleClientSite;
reobject.pstg := Storage;
RichEditOle.InsertObject(reobject);
finally
DeleteObject(FBmp);
end
end;
procedure InsertBitmapToRE(Wnd: HWND; bmp:HBITMAP);
begin
with TImageDataObject.Create do
try
InsertBitmap(Wnd, Bmp);
finally
Free;
end
end;
...
При попытке прокрутить richedit ничего не получается :( Как это можно сделать?? Прокручиваю так:RichEdit1.SelLength := 0;
RichEdit1.SelStart := Length(RichEdit1.Text);
RichEdit1.Perform(EM_SCROLLCARET, 0, 0);
Спасибо за внимание.
← →
XerSon (2008-01-08 05:25) [1]uses Messages.
SendMessage(RichEdit1.Handle, WM_VSCROLL, SB_LINEDOWN, 1);
Страницы: 1 вся ветка
Текущий архив: 2008.02.03;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.05 c