用flash控件做的flash播放器怎样用自己的右键菜单替换它自带的菜单。我从CShockwaveFlash派生了一个CFlashWnd类,
在CFlashWnd中加了
WM_MOUSEMOVE;
WM_RBOTTOMDOWN
还加了自己的右键菜单,但都没有反应。这是怎么回事,难道flash控件
不接受我的这些鼠标消息吗?
请哪位高手指点一下,谢谢!
在CFlashWnd中加了
WM_MOUSEMOVE;
WM_RBOTTOMDOWN
还加了自己的右键菜单,但都没有反应。这是怎么回事,难道flash控件
不接受我的这些鼠标消息吗?
请哪位高手指点一下,谢谢!
解决方案 »
- 通过ODBC读取Excel表,能不能在两个对话框的处理程序中同时读取一个表
- 这俩个函数使用有什么限制吗?//例如第二个
- 我的问题如下: 打开文件对话框能实现图像预览,但点击OK时,系统报告Debug Assertion failed!
- Richedit 中画了下划线 怎么以后一直都有下划线 重设了CHARFORMAT 也不行
- 静态常量比较问题续贴
- 怎样用菜单编辑器编一个上下文菜单(即按右键就可以出来的菜单)?
- Install Shield可破吗?
- 如何编程来确定CD-ROM的门是关闭的还是打开的?
- 高分求用vc编写的电脑故障智能排除专家系统的源代码
- MFC中,CClientDC的问题,请多多指教 :-)
- 哪里可以下载DDK?
- (100分在那兒!!!) 我自己模仿寫了個APIHOOK的類,但在實際使用時有些問題一直難解決,誰對WINDOWS,及其MASM32(FOR WINDOW)熟呀,我把Source
我重载这个函数.
BOOL CShockwaveFlash::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_RBUTTONDOWN)
{
AfxMessageBox("Click Right");
}return CWnd::PreTranslateMessage(pMsg);
}但是flash的菜单也会弹出来的呀,
如果在return CWnd::PreTranslateMessage(pMsg);
之前直接return TRUE;则只有单击右键时flash才播放,如果单击左键,
flash立即暂停,除非再单击右键才继续播放。这是怎么回事?
你可以重载Flash控件的WM_CONTEXTMENU消息,在这个消息中弹出自己的菜单。
如果不行的话,重载对话框的PreTranslateMessage()函数,在这个里面弹出自己的菜单。
注意这个函数中,只有当pMsg->hwnd == Flash.m_hWnd时才能弹出自己的菜单 。
===================================================
Digit Pro space 欢迎您
http://www.dpspace.com
有什么问题到论坛上发表,我将尽我全力为您解决
论坛欢迎高手注册加入,让我们共同进步
怎么不能弹出自己的菜单呀。我在父窗口CMyDlg中重载了WM_CONTEXTMENU消息,
又重载CMyWnd的PreTranslateMessage()函数,
只可以弹出父窗口对话框的菜单。
BOOL CMyWnd::PreTranslateMessage(MSG* pMsg)
{
CWnd::PreTranslateMessage(pMsg);
if (pMsg->message == WM_RBUTTONDOWN)
{
this->GetParent()->SetCapture();
return TRUE;
}
}我把flash做成屏保,怎么flash只能接受内置的鼠标消息,而我的
WM_MOUSEMOVE;
WM_RBOTTOMDOWN
还加了自己的右键菜单,但都没有反应。
void CMyWnd::OnContextMenu(CWnd*, CPoint point)
程序却不执行CMyWnd::OnContextMenu(CWnd*, CPoint point)
而是执行CShockwaveFlash::OnContextMenu(CWnd*, CPoint point)为什么CMyWnd的所有鼠标消息在
CMyWnd::PreTranslateMessage(MSG* pMsg)
中可以检测到,而在相应的消息处理函数中却不响应?难道CMyWnd中的鼠标消息真的被flash控件给吃掉了吗?
不过你可以试试用钩子来钩住消息呀
{
if ( pMsg->message == WM_RBUTTONDOWN )
{
AfxMessageBox("WM_RBUTTONDOWN");
return TRUE;
} return CWinApp::PreTranslateMessage(pMsg); //be careful
}
如果你用SPY++看看控件一定有它的容器。其容器会处理相应的消息。所有你派生的消息由容器处理。不会分发到你的窗口类中。以上有我的看法,如与实际不符请通告我的。GOOD LUCKY
AfxMessageBox("WM_RBUTTONDOWN");
对话框。但我想让CShockwaveFlash的派生类CMyWnd能响应各种鼠标消息。比如单击右键,void CMyWnd::OnRButtonDown(UINT nFlags, CPoint point)
要有响应。
TO: tigerfox(混合体:=初级程序员.郁闷.被开发中)的确在BOOL CMy111Dlg::OnInitDialog()
中加
m_flash.SubclassDlgItem(1234,this);可以实现各种鼠标消息的响应了。但是程序一运行就出错,必须按两下忽略才行!子类化是怎么回事,我还不太懂,能大概说说吗?谢谢!
关键是你要用Create的方法做,所以子类化技术用不了。
我在BOOL CMy111Dlg::OnInitDialog()
中加了
if(isFlashCreated)
m_flash.SubclassDlgItem(1234,this);在CMyWnd中加
void CMyWnd::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
MessageBox("ff");
// CWnd::OnRButtonDown(nFlags, point);
}现在可以响应各种鼠标消息了,
注意要将
// CWnd::OnRButtonDown(nFlags, point);注释掉。但是程序运行时有错误,要按两下忽略才行,
请高手指教,这是怎么回事?子类化后的程序代码在http://www.dpspace.com/bbs/viewfile.asp?ID=2
子类化时会出错,但按两下忽略就可以了,
鼠标消息也有响应了?请问这种情况下怎样子类化?