`
caobihole
  • 浏览: 948640 次
文章分类
社区版块
存档分类
最新评论

用VC 6.0写flash播放器——5、全屏播放

 
阅读更多

purpleendurer 原创

2005.12.07 第1版

  为了让flash可以全屏显示,我们需要为播放窗口添加一个全屏播放按钮,同时为作为flash播放窗口的对话框添加一个BOOL型的成员变量m_IsFullScr,来记录是否为全屏状态。由于flash控件本身具有显示在其它控件前面的特性,因此我们只需要把flash控件大小设置为全屏,而不需要将其它的控件设置成隐藏。不过,由于程序使用定时器动态显示当前帧数的关系,因此当前帧数的信息还是会显示出来,影响flash的全屏播放的效果,所以我们要隐藏状态栏,或者Kill掉定时器。

当用户点击全屏播放按钮时的处理代码如下:

void CSwfPlayerDlg::OnbtnFullScr()//全屏播放
{
// TODO: Add your control notification handler code here
if(false==m_IsFullScr)
{
GetWindowPlacement(&m_DefDlgPos);
::ShowWindow(m_hStatusWindow, SW_HIDE);//隐藏状态栏
SetWindowLong(m_hDlg, GWL_STYLE, GetWindowLong(m_hDlg, GWL_STYLE) - WS_CAPTION);//去掉标题栏
CClientDC dc(this);
int horzres = dc.GetDeviceCaps(HORZRES);
int vertres = dc.GetDeviceCaps(VERTRES);
this->MoveWindow(0, 0, horzres, vertres);
m_SwfBox.SetWindowPos(&CWnd::wndTop, 0, 0, horzres, vertres, SWP_SHOWWINDOW);//让flash全屏显示
m_IsFullScr = true;
}
}

  当播放窗口全屏显示时,为了能通过按下Esc键来退出全屏状态,我们为作为flash播放窗口的对话框添加一个PreTranslateMessage方法,代码如下:

BOOL CSwfPlayerDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)//如果按下Esc键
{
if (true==m_IsFullScr)//是全屏显示
{
SetWindowLong(m_hDlg, GWL_STYLE, GetWindowLong(m_hDlg, GWL_STYLE) + WS_CAPTION);//恢复标题栏
ShowWindow(SW_HIDE);
SetWindowPlacement(&m_DefDlgPos);
m_IsFullScr = false;
::ShowWindow(m_hStatusWindow, SW_SHOW);//显示状态栏
}
return true;//防止按Esc键关闭对话框
}
return CDialog::PreTranslateMessage(pMsg);
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics