怎样捕捉视频上的鼠标事件?(200分)

  • 主题发起人 主题发起人 qlwy
  • 开始时间 开始时间
Q

qlwy

Unregistered / Unconfirmed
GUEST, unregistred user!
视频放在一个panel里,捕捉到视频后需要在视频区域内进行右健操作,结果发现视频区域
内不响应鼠标事件。
请问高手:怎样捕捉视频上的鼠标事件,并得到相应的X、Y坐标?(急)
 
问个低级的问题:
什麽叫"视频"?
 
在Application.OnMessage截获鼠标消息,判断目标句柄是不是你所说的句柄
(或者直接用鼠标位置判断是不是在你的“视频”范围内)

你用来得到X,Y坐标GetCursorPos

我也不明白你所说的"视频"的意思,所以我没有做过试验
 
视频窗口是一个HWND,以你用的PANEL为父窗口,你可能应该为视频子窗口单独写鼠标事件
程序
 
我有点不太明白,视频放在panal上,不是可以通过panal的鼠标事件来捕捉鼠标事件吗?
 
关于视频(video)是什么?可以看一下Delphi help中Video Capture Macros这些跟视频有关的宏。
另外可以看一下例子程序avicap
在视频区域捕获单击和双击事件还是没能实现,yxyyyy的回答我去试一下,szchengyu的回答有道理,
不过我不会写^_^
我现在用的是右键响应弹出菜单事件获取鼠标位置,下面是程序。
procedure TfrmVideo.PopupMenu1Popup(Sender: TObject);
var
xco,yco : integer;
mypoint : tpoint;
begin
myPoint := videoarea.ScreenToClient(mouse.CursorPos);
xco := mypoint.x;
yco := myPoint.y;
end;
请大家再多提建议,多谢了![:)][:)]
 
这样如何?

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
procedure MyWndProc(var Msg: TMsg; var Handled: Boolean);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

uses vfw;

var
wndCap: HWND;

procedure TForm1.MyWndProc(var Msg: TMsg; var Handled: Boolean);
begin
if msg.hwnd = wndCap then
begin
if msg.message = WM_LBUTTONDOWN then caption := 'WM_LBUTTONDOWN';
if msg.message = WM_RBUTTONDOWN then caption := 'WM_RBUTTONDOWN';
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
wndCap := capCreateCaptureWindow('a', ws_visible or ws_child, 0, 0, 384, 288,
Panel1.Handle, 100);
capDriverConnect(wndCap, 0);
capPreview(wndCap, true);
capPreviewRate(wndCap, 66);
Application.OnMessage := MyWndProc;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DestroyWindow(wndCap);
end;

end.
 
to szchengyu:
我编译你的源码时,为什么会有Undeclare identifier 'capCreateCaptureWindow'
的提示, capCreateCaptureWindow 不是一个API函数吗?
 
..............

uses vfw;

............

这句用了吗?
capCreateCaptureWindow 是一个宏,具体可看 D5 以上的帮助
 
看来是自己搞错了
 
我想没有必要那么复杂吧,为什么不通过panal的鼠标事件来捕捉鼠标事件呢?
 
视频加载上去后,panel被覆盖,panel的鼠标事件是不起作用的。
项目已经完成,参与的人都有分:)
 
多人接受答案了。
 

Similar threads

后退
顶部