请大家进来看看。想让mediaplay,realplay等控件双击全屏,怎么做呢? 我用鼠标钩子想得到鼠标在mediaplay,realplay控件上双击的消息。却得不到呢?我应该怎么做才能可以在这些控件上双击得以全屏呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那我说一下方法先:1、不管用哪种播放控件(我是用的类方法,没有直接拖到对话框模版上的),先在创建这个视频控件的时候保存好视频窗口区域(即该窗口大小)。并设置播放控件的视频区域与你的窗口是适应的,即大小跟着主窗口变化。2、在你的主窗口onsize,onmove函数中跟着保存视频区域窗口大小(关键一点就是你的视频窗口是主窗口的大小减去其它的你的主窗口的内容大小)。3、添加m_OldHook = SetWindowsHookEx(WH_MOUSE,CMediaWnd::MouseProc,NULL,GetCurrentThreadId());LRESULT CALLBACK CMediaWnd::MouseProc( int nCode,WPARAM wParam, LPARAM lParam ){ if(nCode >= 0) { MOUSEHOOKSTRUCT* pmouse = (MOUSEHOOKSTRUCT*)lParam; if(PtInRect(&CMediaWnd::m_ImageRect, pmouse->pt)) { switch (wParam) { case WM_RBUTTONDOWN: case WM_RBUTTONUP: return -1; case WM_MOUSEMOVE: SetCursor(LoadCursor(NULL,IDC_ARROW)); return -1; case WM_LBUTTONDBLCLK: ::SendMessage(CMediaWnd::m_hMainWnd,USER_IMAGE_DBCLICK,0,0); return -1; default: break; } } } return CallNextHookEx(CMediaWnd::m_OldHook,nCode,wParam,lParam);}4\、解释一点:GetCurrentThreadId();会得到的线程ID值与视频控件的线程ID值是会相同的。5、最好还要做个键盘勾子,把ESC键的功能得到。这样也可以防止用护按ESC键退出全屏时的窗口大小不变化。6、最后就是要把全屏后恢复的大小内容的视频区域还原。这样就不会出现鼠标不响应的情况。7、这种方法适应MEDIAPLAY,REALPLAY,quickplay控件。其中MEDIAPLAY9.0,win2000环境下有点不太好使,其它的功能都已经正常。 vs2010 串口通信的问题 保存图片上的注释 为什么我安装了VS2008,又装了SP1后,还是看不到Feature Pack文件夹? VC++/MFC 编写的具有水波效果的屏幕保护程序 如何得到操作系统的语言?比如说OS是英文还是简体中文、繁体中文,还是日文的? 怎么编写插件程序 100分请教,CTreeCtrl控件问题(急急急) 如何让一个dialog显示指定长的时间就消失?)(象splashwindow那样) 我仍然不能打开第二个光驱? ASSERT()是干什么用的 vc能通过ado操作sql server数据库吗? 新手请教:VC中如何调出JPG格式的图像,并显示出来?
1、不管用哪种播放控件(我是用的类方法,没有直接拖到对话框模版上的),先在创建这个视频控件的时候保存好视频窗口区域(即该窗口大小)。并设置播放控件的视频区域与你的窗口是适应的,即大小跟着主窗口变化。
2、在你的主窗口onsize,onmove函数中跟着保存视频区域窗口大小(关键一点就是你的视频窗口是主窗口的大小减去其它的你的主窗口的内容大小)。
3、添加m_OldHook = SetWindowsHookEx(WH_MOUSE,CMediaWnd::MouseProc,NULL,GetCurrentThreadId());LRESULT CALLBACK CMediaWnd::MouseProc( int nCode,WPARAM wParam, LPARAM lParam )
{
if(nCode >= 0)
{
MOUSEHOOKSTRUCT* pmouse = (MOUSEHOOKSTRUCT*)lParam;
if(PtInRect(&CMediaWnd::m_ImageRect, pmouse->pt))
{
switch (wParam)
{
case WM_RBUTTONDOWN:
case WM_RBUTTONUP:
return -1;
case WM_MOUSEMOVE:
SetCursor(LoadCursor(NULL,IDC_ARROW));
return -1;
case WM_LBUTTONDBLCLK:
::SendMessage(CMediaWnd::m_hMainWnd,USER_IMAGE_DBCLICK,0,0);
return -1;
default:
break;
}
} }
return CallNextHookEx(CMediaWnd::m_OldHook,nCode,wParam,lParam);
}
4\、解释一点:GetCurrentThreadId();会得到的线程ID值与视频控件的线程ID值是会相同的。
5、最好还要做个键盘勾子,把ESC键的功能得到。这样也可以防止用护按ESC键退出全屏时的窗口大小不变化。
6、最后就是要把全屏后恢复的大小内容的视频区域还原。这样就不会出现鼠标不响应的情况。
7、这种方法适应MEDIAPLAY,REALPLAY,quickplay控件。其中MEDIAPLAY9.0,win2000环境下有点不太好使,其它的功能都已经正常。