窗口全屏,覆盖任务栏

给人做个东西,有这个要求

先放上一些玩意的隐藏
任务栏::ShowWindow(::FindWindow(_T("Shell_TrayWnd"), NULL), SW_HIDE);
开始菜单 ::ShowWindow(::GetDlgItem(::FindWindow(_T("Shell_TrayWnd"), NULL),0x130), SW_HIDE);//0x130 是开始按钮的ID
桌面 ::ShowWindow(::FindWindow(_T("ProgMan"), NULL), SW_HIDE);

禁用可以用EnableWindow()

以为隐藏任务栏就完事,结果下面不给腾出位子来,任务栏原先的地方还是不会被覆盖
在任务栏上右键,属性,设置任务栏自动隐藏任务栏时发现窗口会占据那块位置,网上找到个设置自动隐藏的代码,结合隐藏任务栏,成功达到目的

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

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

	ShowWindow(hWnd,nCmdShow);

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


 

用到shellapi需要包含头文件

vs08+xp测试通过

你可能感兴趣的:(窗口全屏,覆盖任务栏)