
winform AxShockwaveFlash控件 怎么才能做到类似mouseclick事件效果
有两个panel容器分别放了一个Flash控件Flash.Size=panel.Size有个按钮事件激发后希望获得点击panel区域的坐标也就是说给Flash添加个类似M...
有两个panel容器 分别放了一个Flash控件 Flash.Size=panel.Size
有个按钮事件 激发后希望获得点击panel区域的坐标
也就是说给Flash添加个类似MouseClick 获取鼠标点击坐标值 获取完成后撤销MouseClick
问题1:
AxShockwaveFlash没有MouseClick事件 如果可以重写控件自行添加该事件的话该怎么做?
迂回方案:
给panel添加个pitureBox控件 透明 然后触发pitureBox的mouseclick来获取坐标 之后清除掉pitureBox控件
问题是透明是相对于父容器控件的透明 也就是说看不到Flash控件了 也就是说如果能让pitureBox相对于flash控件透明也行
求实例或解决方案 展开
有个按钮事件 激发后希望获得点击panel区域的坐标
也就是说给Flash添加个类似MouseClick 获取鼠标点击坐标值 获取完成后撤销MouseClick
问题1:
AxShockwaveFlash没有MouseClick事件 如果可以重写控件自行添加该事件的话该怎么做?
迂回方案:
给panel添加个pitureBox控件 透明 然后触发pitureBox的mouseclick来获取坐标 之后清除掉pitureBox控件
问题是透明是相对于父容器控件的透明 也就是说看不到Flash控件了 也就是说如果能让pitureBox相对于flash控件透明也行
求实例或解决方案 展开
展开全部
重写控件就可以:
新的控件有MyMouseClick事件,跟正常控件事件一样使用就可以
public partial class MyFlashWave : AxShockwaveFlashObjects.AxShockwaveFlash
{
public event MouseEventHandler MyMouseClick;
public delegate void MouseEventHandler(object sender, MouseEventArgs e);
public class MouseEventArgs : EventArgs
{
}
private const int WM_LBUTTONDOWN = 0x0201;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
switch (m.Msg)
{
case WM_LBUTTONDOWN:
{
MyMouseClick(this, new MouseEventArgs());
}
break;
}
}
}
新的控件有MyMouseClick事件,跟正常控件事件一样使用就可以
public partial class MyFlashWave : AxShockwaveFlashObjects.AxShockwaveFlash
{
public event MouseEventHandler MyMouseClick;
public delegate void MouseEventHandler(object sender, MouseEventArgs e);
public class MouseEventArgs : EventArgs
{
}
private const int WM_LBUTTONDOWN = 0x0201;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
switch (m.Msg)
{
case WM_LBUTTONDOWN:
{
MyMouseClick(this, new MouseEventArgs());
}
break;
}
}
}
追答
傻瓜式的处理了一下鼠标坐标的两个参数
MouseEventArgs 直接没有用自定义的,采用系统的那个class了
public partial class MyFlashWave : AxShockwaveFlashObjects.AxShockwaveFlash
{
public event MouseEventHandler MyMouseClick;
public delegate void MouseEventHandler(object sender, MouseEventArgs e);
private const int WM_LBUTTONDOWN = 0x0201;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
switch (m.Msg)
{
case WM_LBUTTONDOWN:
{
Int16 x = (Int16)m.LParam;
Int16 y = (Int16)((int)m.LParam >> 16);
//clicks默认传1,Delta=0
MyMouseClick(this, new MouseEventArgs(MouseButtons.Left, 1, x, y, 0));
}
break;
}
}
}

2023-10-30 广告
深圳市微测检测有限公司始创于2005年,是一家综合性、全方位、一站式的权威第三方检测认证公司。自成立以来,Microtest微测检测已成功为上万家企业完成数十万计的产品测试和认证,协助企业的产品畅销全球。Microtest微测检测已建立二十...
点击进入详情页
本回答由微测检测提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询