На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Не работает пример кода извлечение Bitmap из Richedit
    Пытаюсь сделать вставку картинок в Richedit используя этот пример. Как вставить Bitmap в TRichEdit. Потом хочу извлечь картинки как это сделано в этом примере Извлечение BitMap из RichEdit. Только вот у меня не получается не выполняется это условие
    ExpandedWrap disabled
      if Succeeded(DataObject.GetData(FormatEtc, Medium)) then

    В чём может быть проблема?
    Вот весь код
    ExpandedWrap disabled
      procedure TForm1.Button5Click(Sender: TObject);
      var IREO:IRichEditOle;
      ReObject:TReobject;
      Count: Integer;
      I:Integer;
      DataObject:IDataObject;
      FormatEtc:TFormatEtc;
      Medium: TStgMedium;
      MetafilePictPtr: PMetafilePict;
      BitsLength: UINT;
      Bits: Pointer;
       
      MetaFile: TMetafile;
      bmp: TBitmap;
      Path:String;
      Position:LongInt;
      begin
      Count := 0;
      Path:='c:\temp2\richedit\';
      SendMessage(RichEdit1.Handle, EM_GETOLEINTERFACE, 0, Longint(@IREO));
       
      Count := IREO.GetObjectCount;
      for I := 0 to Count-1 do
      begin
         ZeroMemory(@ReObject, SizeOf(ReObject));
         ReObject.cbStruct:=SizeOf(ReObject);
         if Succeeded(IREO.GetObject(I,ReObject, $00000001)) then
         if ReObject.poleobj.QueryInterface(IDataObject,DataObject)=S_OK then
         if Supports(ReObject.poleobj,IDataObject,DataObject) then
         begin
            Position:=ReObject.cp;
            FormatEtc.cfFormat:=CF_METAFILEPICT;
            FormatEtc.ptd:=nil;
            FormatEtc.dwAspect:=DVASPECT_CONTENT;
            FormatEtc.lindex:=-1;
            FormatEtc.tymed:=TYMED_MFPICT;
            OleCheck(DataObject.GetData(FormatEtc,Medium));
            if Succeeded(DataObject.GetData(FormatEtc,Medium)) then
            try
            
              MetafilePictPtr:=GlobalLock(Medium.hMetaFilePict);
              try
       
               BitsLength:= GetMetaFileBitsEx(MetafilePictPtr.hMF,0,nil);
               GetMem(Bits,BitsLength);
               try
                if GetMetaFileBitsEx(MetaFilePictPtr.hMF, BitsLength, Bits) < BitsLength then
                RaiseLastOSError;
       
                MetaFile:=TMetafile.Create;
                MetaFile.Handle:=SetWinMetaFileBits(BitsLength,Bits,0,MetafilePictPtr^);
                if (MetaFile.Width<=0)or(MetaFile.Height<=0)or(MetaFile.Handle<=0)then
                raise Exception.Create('Invalid Metafile-Picture');
                bmp:=TBitmap.Create;
                bmp.Width:=MetaFile.Width;
                bmp.Height:=MetaFile.Height;
                bmp.Canvas.StretchDraw(Rect(0,0,bmp.Width,bmp.Height),MetaFile);
                bmp.SaveToFile(Path+'img'+IntToStr(I+1)+'.bmp');
       
               finally
                 bmp.Free;
                 MetaFile.Free;
                 FreeMem(Bits, BitsLength);
               end;
              finally
               GlobalUnlock(Medium.hMetaFilePict);
              end;
       
            finally
               ReleaseStgMedium(Medium);
            end;
          
         end;
      end;
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script Execution time: 0,1174 ]   [ 18 queries used ]   [ Generated: 11.12.19, 01:10 GMT ]