怎么把ShockWaveFlash控件上发生的鼠标右键捕获,并替换成鼠标左键事件
来源:互联网 发布:音乐剪切合成软件 编辑:程序博客网 时间:2024/04/30 16:13
forest_wawa (大坏蛋007)
http://search.csdn.net/expert/topic/50/5003/2003/2/16/1432958.htm
描述:我在程序里面使用ShockWaveFlash的控件,我需要实现的功能是∶
1) 在FLAHS动画的一个按钮上面压下鼠标左键后,执行flash的左键消息响应函数OnFsCommand();
2) 在这个按钮上压下鼠标右键后还是要执行OnFsCommand(),并且还需要弹出一个popup菜单
回复人: masterz()
BOOL CuseflashDlg::PreTranslateMessage(MSG* pMsg)
{
// change right button message to left button message by masterz
POINT pt;
pt.x = LOWORD(pMsg->lParam);
pt.y= HIWORD(pMsg->lParam);
CString msg;
CRect rc;
m_flash.GetWindowRect(&rc);
ScreenToClient(&rc);
msg.Format("mouse (%d,%d),flash (%d,%d,%d,%d)",pt.x,pt.y,rc.left,rc.top,rc.right,rc.bottom);
if(pMsg->message==WM_RBUTTONDOWN||pMsg->message==WM_RBUTTONUP||pMsg->message==WM_RBUTTONDBLCLK)
OutputDebugString(msg);
if(rc.PtInRect(pt)||::GetFocus()==m_flash.m_hWnd||pMsg->hwnd==m_flash.m_hWnd)
//if(::GetFocus()==m_flash.m_hWnd)
{
if(pMsg->message==WM_RBUTTONDOWN)
pMsg->message=WM_LBUTTONDOWN;
if(WM_RBUTTONUP==pMsg->message)
pMsg->message = WM_LBUTTONUP;
if(WM_RBUTTONDBLCLK==pMsg->message)
pMsg->message=WM_LBUTTONDBLCLK; if(pMsg->message==WM_RBUTTONDOWN||pMsg->message==WM_RBUTTONUP||pMsg->message==WM_RBUTTONDBLCLK)
OutputDebugString("point in rect");
}
return CDialog::PreTranslateMessage(pMsg);
}
回复人: masterz()
m_flash.LoadMovie(0,"C://Downloads//icons.swf");
m_flash.Play();
版主点评:
MFC中消息替换功能一般都要在PreTranslateMessage函数中实现。
flash8.ocx中对象的callfunction怎样运用,注意swf文件要用flash8.0版本制作,flash控件要flash8.ocx版本
VB描述(传多个参数)
VB端
Private Sub Command1_Click()
Flash1.CallFunction "<invoke name=""show"" returntype=""xml""><arguments><string>hello</string><string>world</string></arguments></invoke>" '篇幅关系,与上面同行
End Sub
Private Sub Form_Load()
ShockwaveFlash1.LoadMovie 0, App.Path & "/showstring.swf"
End Sub
flash端
①添加一个文本框text_txt以显示效果
②ActionScript代码为
function show(str1:String,str2:String):Void{
test_txt.text=str1+" : "+str2;
}
flash.external.ExternalInterface.addCallback("show",this,show);
C++或C#描述(只传一个参数,用)
主程序端:
flash1.LoadMovie(0,Application.StartPath+"/showstring.swf");
flash1.CallFunction("<invoke name=/"test/" returntype=/"xml/"><arguments><string>Helloworld</string></arguments></invoke>");
flash端:
①添加一个文本框text_txt以显示效果或用trace("call: "+result+"")
②ActionScript代码为,其中result只是参数,而主程序端使用AS的函数时不需要关心参数名,只有知道有参数个数,或参数位置
function test(result:Object):Void{
test_txt.text=result;
}
flash.external.ExternalInterface.addCallback("test", this, test);
- 怎么把ShockWaveFlash控件上发生的鼠标右键捕获,并替换成鼠标左键事件
- 鼠标右键 左键 滚轮事件
- 鼠标左键右键不触发事件的原因
- UserControl的单击事件对鼠标左右键都有效,怎样使之像按钮控件那样只对鼠标左键敏感?
- (改进)UserControl的单击事件对鼠标左右键都有效,怎样使之像按钮控件那样只对鼠标左键敏感?
- 捕获 WebBrowser 控件的鼠标事件
- 捕获 WebBrowser 控件的鼠标事件
- 捕获外部程序中TListView控件的鼠标右键点击事件
- 鼠标右键事件、左键单击事件判定
- 交换鼠标的左右键
- QTreeWidget区分鼠标左右键点击事件的方法
- Silverlight - 鼠标右键及左键双击事件
- js怎么区分出点击的是鼠标左键还是右键?
- 用js,jQuery屏蔽鼠标右与jquery 鼠标右键事件、左键单击事件判定
- 怎么把notepad++添加的鼠标右键中
- QTableView区分鼠标点击事件的左键和右键以及QSortFilterProxyModel重新排序的问题
- 如何在onMouseDown事件中判断按下的是鼠标左键还是右键
- 动态创建的CTreeCtrl控件,响应鼠标左键,右键按下消息
- perl与中文信息处理 (转载)
- asp.net 数据访问层使用存储过程分页
- 基于dwr框架的Ajax技术的使用
- perl对中文的处理(encode,decode) (转载)
- Oracle常见错误——ORA-00942
- 怎么把ShockWaveFlash控件上发生的鼠标右键捕获,并替换成鼠标左键事件
- Perl对中文的处理问题 (转载)
- Perl Unicode全攻略 (转载)
- 实例详细介绍各种字符集编码转换问题 [转]
- java中的反射机制中invoke典型用法
- Oracle常见错误——TNS-01150
- Cookie注入攻击 (转载)
- CMD 命令速查手册 (转载)
- 软件自动化测试—代码覆盖率