VC隐藏任务栏,让窗口全屏

这里我选用实现对话框的全屏的方案是:

1 隐藏任务栏

2 将对话框最大化显示并且去掉标题栏

 

一  单独隐藏任务栏,很容易实现

缺陷:隐藏后任务栏所占据的空间还是没有腾出来

代码如下:
HWND hWnd;
hWnd = FindWindow("Shell_TrayWnd",NULL);
ShowWindow(hWnd,SW_HIDE);

 

设置任务栏自动隐藏 ,自动隐藏后还让窗口自动扩展而占满了任务原先所在区域,

缺陷:鼠标接近桌面最下边的时候,任务栏又会自动恢复

代码如下:

#ifndef ABM_SETSTATE
#define ABM_SETSTATE 0x0000000a
#endif

APPBARDATA apBar;
memset(&apBar, 0, sizeof(apBar));
apBar.cbSize = sizeof(apBar);
apBar.hWnd = hWnd;
if(apBar.hWnd != NULL)
{
apBar.lParam = ABS_AUTOHIDE | ABS_ALWAYSONTOP;
SHAppBarMessage(ABM_SETSTATE, &apBar); //设置任务栏自动隐藏
}

 

隐藏任务栏设置任务栏自动隐藏两者结合就能解决问题:

void HideTaskBar(BOOL bHide)
{
int nCmdShow;
HWND hWnd;
LPARAM lParam;

hWnd = FindWindow("Shell_TrayWnd",NULL);
if(bHide == TRUE)
{
nCmdShow = SW_HIDE;
lParam = ABS_AUTOHIDE | ABS_ALWAYSONTOP;
}
else
{
nCmdShow = SW_SHOW;
lParam = ABS_ALWAYSONTOP;
}

ShowWindow(hWnd,nCmdShow);//隐藏任务栏


#ifndef ABM_SETSTATE
#define ABM_SETSTATE 0x0000000a
#endif

APPBARDATA apBar;
memset(&apBar, 0, sizeof(apBar));
apBar.cbSize = sizeof(apBar);
apBar.hWnd = hWnd;
if(apBar.hWnd != NULL)
{
apBar.lParam = lParam;
SHAppBarMessage(ABM_SETSTATE, &apBar); //设置任务栏自动隐藏
}
}

二  隐藏了任务栏然后将对话框最大化显示并且去掉标题栏就能实现全屏了:

在OnInitDialog()添加 如下代码:

ModifyStyle(WS_CAPTION,0,0);

SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0);

 

当然这里要注意这两个步骤的顺序,不能颠倒。

 

 

 

这里还有一个很简单的方法:

获得桌面的大小,将对话框大小设置为桌面大小并且去掉对话框标题栏。

在OnInitDialog()中添加

1 获得桌面大小

一种方法,先取得桌面窗口句柄HWND hDeskTopWnd=::GetDesktopWindow();

接着取得

CRect rect;

::GetWindowRect(hDeskTopWnd, &rect);

第二种方法 获得屏幕当前像素

int x= GetSystemMetrics(SM_CXSCREEN);

int y= GetSystemMetrics(SM_CYSCREEN);

 

2

ModifyStyle(WS_CAPTION,0,0);//去掉标题栏

SetWindowPos(&wndTopMost, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, SWP_SHOWWINDOW);

//SetWindowPos(&wndTopMost, 0, 0, x, y, SWP_SHOWWINDOW);//这种应该是这样,还没试验过^_^

 

以上都是简单的实现,先要变换控件位置和大小还要另外再做处理

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值