关于伪对话框全屏遇到的有关问题:无法隐藏任务栏和右边边框
关于伪对话框全屏遇到的问题:无法隐藏任务栏和右边边框
正在写一个播放器。想实现全屏播放(即窗口客户区铺满屏幕)。依赖于directshow提供的全屏接口会出现黑一下屏的现象。所以我想通过调整窗口大小来实现伪全屏。
我的窗口本来是有标题栏,边框为Resizing
方法一:计算出屏幕的分辨率。计算出标题栏和边框的高度。设置窗口大小,然窗口的客户区大小为屏幕分辨率的大小。
代码如下:
我看网上的全屏也是这么实现的。可是我测试的结果是全屏不理想:任务栏还在显示,右边的边框还有显示,如下图:

方法二:
最大化的关键代码
效果还是和方法一一样。
怎么解?
------解决方案--------------------
亲测有效
正在写一个播放器。想实现全屏播放(即窗口客户区铺满屏幕)。依赖于directshow提供的全屏接口会出现黑一下屏的现象。所以我想通过调整窗口大小来实现伪全屏。
我的窗口本来是有标题栏,边框为Resizing
方法一:计算出屏幕的分辨率。计算出标题栏和边框的高度。设置窗口大小,然窗口的客户区大小为屏幕分辨率的大小。
代码如下:
static int iScreenX= GetSystemMetrics(SM_CXSCREEN); // X分辨率
static int iScreenY= GetSystemMetrics(SM_CYSCREEN); // Y分辨率
static int iFrame = GetSystemMetrics(SM_CYFRAME); //边框高度或宽度
static int iCaption = GetSystemMetrics(SM_CYCAPTION); //标题栏高度
static BOOL full = FALSE;//是否处于全屏状态
static RECT rc;//保存全屏前窗口的位置和大小
if (!full)
{
GetWindowRect(&rc);//保存全屏前的大小。
SetWindowPos(NULL,-iFrame,-iFrame-iCaption,iScreenX+2*iFrame,iScreenY+2*iFrame+iCaption,0);
}
else
{
MoveWindow(&rc);
}
full = !full;
CDialogEx::OnLButtonDblClk(nFlags, point);
我看网上的全屏也是这么实现的。可是我测试的结果是全屏不理想:任务栏还在显示,右边的边框还有显示,如下图:
方法二:
最大化的关键代码
ModifyStyle(WS_CAPTION,0,0);
ShowWindow(SW_SHOWMAXIMIZED);
效果还是和方法一一样。
怎么解?
对话框全屏
------解决方案--------------------
void CtetDlg::OnBnClickedButton1()
{
int nFullWidth=GetSystemMetrics(SM_CXSCREEN);
int nFullHeight=GetSystemMetrics(SM_CYSCREEN);
ModifyStyle(WS_CAPTION
------解决方案--------------------
WS_THICKFRAME,0);
SetWindowPos(NULL,0,0,nFullWidth,nFullHeight,SWP_SHOWWINDOW);
}
亲测有效