如何让窗口全屏显示
我就想做类似暴风影音的播放器,
基于对话框实现的
具体是在对话框上放置两个对话框, 一个播放窗口(就是哪个黑色区域),一个控制窗口(播放暂停等按钮)
打开图像后,双击中间的播放窗口之后, 让播放窗口全屏显示,该怎么实现?
请赐教。
[解决办法]
首先,父窗口必须是全屏显示。
其次,在播放窗口中建立响应双击的处理函数。在函数中声明一个静态局部变量来标志是否全屏,获得播放窗口的客户区大小并保存下来,供恢复双击前的状态使用。
在获取显示器的宽和高,播放窗口MoveWindow()即可。
[解决办法]
暴风影音播放器是用DirectShow开发的,DShow里有现成的切换全屏的接口
如果楼主不是使用DShow开发,需要调用MoveWindow或SetWindowPos来把窗口拉成全屏状态,楼主只所以没有实现效果,是因为少处理了WM_GETMINMAXINFO消息,因为缺省情况下,操作系统不允许应用程序窗口超过WorkArea
[解决办法]
响应WM_GETMINMAXINFO
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
if(m_bFullScreen)
{
lpMMI->ptMaxSize.x=m_FullScreenRect.Width();
lpMMI->ptMaxSize.y=m_FullScreenRect.Height();
lpMMI->ptMaxPosition.x=m_FullScreenRect.Width();
lpMMI->ptMaxPosition.y=m_FullScreenRect.Height();
lpMMI->ptMaxTrackSize=lpMMI->ptMaxSize;
}
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
[解决办法]
框架里处理WM_GETMINMAXINFO,然后MoveWindow把框架拉到足够大,使你的播放窗口大小正好盖住屏幕
给你个例子吧:
http://www.vckbase.com/document/viewdoc/?id=460
[解决办法]
//CDlg1为主窗体
//CDlg2为子窗体
BOOL CreateModeLessDlg(UINT dlgID) //创建无模式对话框
{
CDlg2 * pDialog =new CDlg2 ; //可以任选一个对话框类来创建无模式对话框,最好不要用待创建对话框的父类来创建
ASSERT_VALID (pDialog) ;
BOOL bResult = pDialog->Create( dlgID) ;
pDialog->ShowWindow(1);
ASSERT (bResult ) ;
return bResult;
}
BOOL CDlg1::OnInitDialog()
{
CreateModeLessDlg(IDD_DIALOG2); //CDlg2 ID
return TRUE;
}
void CDlg1::OnButton1()
{
PostMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0); //最大化主窗体
}