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

王朝vc·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

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);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航