Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2019, 18:52   #1
qwertyui123
 
Регистрация: 19.08.2013
Сообщений: 8
По умолчанию Передача Handle из DLL

Добрый день, так и не смог по мануалам форума понять как работает эта технология передачи. В PaintBox ничего не выводится

DLL

Код:
  Function C_Axis(H:HDC):HDC;
  stdcall; export;
  var
  CAxis:Tcanvas;

begin
    CAxis :=TCanvas.Create;
    try
      CAxis:=Tcanvas.Create;
      with CAxis do Begin
        Handle := H;
        Brush.Color:=clGreen;
        Pen.Color:=clGreen;
        FillRect(rect(0,0,100,100));
        moveto(50,50);
        lineto(100,100);
      End;
      Result:=CAxis.Handle;
    finally
    CAxis.Handle:=0;
    CAxis.Free;
    H:=0;
    end;
end;
Приложение

Код:
procedure TForm1.Button1Click(Sender: TObject);

begin

 bm_img:=TBitmap.Create;
 bm_img.PixelFormat:=pf24bit;
 bm_img.Width:=100;
 bm_img.Height:=100;

 bm_img.Canvas.Handle:=C_Axis(bm_img.Canvas.Handle);

 bitblt(PaintBox1.Canvas.Handle, 0, 0,100,100, bm_img.Canvas.Handle,0,0,SRCCopy);

 PaintBox1.invalidate;
 bm_img.Free;
end;
Подскажите где ошибка.
qwertyui123 вне форума Ответить с цитированием
Старый 29.05.2019, 09:05   #2
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

э... Зачем вы два раза создали TCanvas?
Зачем вы возвращаете CAxis.Handle в Result, когда оно к моменту выхода уже будет не валидно?
Зачем приравнивать H к нулю? Это же у вас локальная переменная...
Зачем bitblt, когда по идее нада просто C_Axis(PaintBox1.Canvas.Handle)?
Вы не понимаете, что даже если у вас там что-то и рисуется, команда PaintBox1.invalidate() как раз всё стирает..?
И кстати зачем вам лишний битмап?
ResourceSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HANDLE РоРоРоЛоЛоЛо Помощь студентам 2 18.11.2013 15:01
Передача информации по средствам Handle и HWND?! (Delphi) Npwas Помощь студентам 2 20.06.2012 14:43
php $handle KANDRAT PHP 5 11.12.2011 16:10
Как узнать handle окна имея handle обного из его компонентов SeRhy Win Api 2 18.10.2009 19:31
Как имея handle окна узнать handle edit-a который находится в етом окне SeRhy Общие вопросы Delphi 1 20.07.2008 13:48