小弟我现在使用一个视频卡的SDK作二次开发,SDK中提供一个OCX,用于连接视频卡并显示
在界面上的.没有Canvas属性,但具有Handle: HWND属性,没有MouseDown等鼠标事件和Paint事件;
两个问题:
1:我现在想在该控件连接显示视频时,在之上使用代码绘制如线条字符串等图形.使用GetCD等API
可以绘出,但没有Paint事件,绘制代码不知到放在哪里?使用Timer定时绘制的话,闪烁很严重;2:我想在控件上面响应鼠标MouseDown等事件,怎么处理呢?

解决方案 »

  1.   

    第二个问题:
    先定义:
      public
        { Public declarations }
        procedure mymessage(var msg:tmsg;var handled:boolean);procedure TfrmMain.mymessage(var msg: tmsg; var handled: boolean);
    begin
      //检测是不是在控件ShockwaveFlash1上有点击UP
      if (msg.message=WM_LBUTTONUP) and (msg.hwnd=ShockwaveFlash1.Handle)  then
      begin
        //确定鼠标位置。
        if (mouse.cursorpos.x<200) and (mouse.CursorPos.x>100) and (mouse.cursorpos.y<200) and (mouse.CursorPos.Y>100) then
        begin
           //你要做的事  
           handled:=true;
           exit;
        end;
      end;
    end;procedure TfrmMain.FormCreate(Sender: TObject);
    beginapplication.onmessage:=mymessage;end;
    这样应该可以!
      

  2.   

    你这个视频卡提供的接口太少了,去网上下载个CapPro3.0吧。能支持多种视频采集卡,接口功能也很全面。
      

  3.   

    to wugang1979(阿瓜):
    从测试代码中好像可以,但还得过两天接上摄像头试一下效果,OK的话,立即结帖给分!