窗口怎么完全覆盖任务栏

cc___999 2016-03-28 02:54:37
目前有一个窗口给置顶了,会覆盖在任务栏上。但是点击切换几次别的窗口之后任务栏就会重新跑到上面来。
怎么创建一个完全置顶任务栏的窗口?
...全文
611 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cc___999 2016-03-29
  • 打赏
  • 举报
回复
引用 1 楼 WUYUAN2011WOAINI 的回复:
        HWND hwnd = FindWindow("Shell_traywnd", NULL);
        EnableWindow(hwnd, false);
是这样的么?实测不行,
kuankuan_qiao 2016-03-29
  • 打赏
  • 举报
回复
引用 6 楼 sx5486510 的回复:
[quote=引用 5 楼 WUYUAN2011WOAINI 的回复:] [quote=引用 4 楼 sx5486510 的回复:] [quote=引用 3 楼 WUYUAN2011WOAINI 的回复:] [quote=引用 2 楼 sx5486510 的回复:] [quote=引用 1 楼 WUYUAN2011WOAINI 的回复:]
        HWND hwnd = FindWindow("Shell_traywnd", NULL);
        EnableWindow(hwnd, false);
是这样的么?实测不行,[/quote]切换几次别的窗口之后任务栏就会重新跑到上面来,----------能解释下是怎么切换的嘛[/quote]软件打开,刚开始是能遮挡住任务栏。如果我点一下浏览器再点下任务栏,这样点几次下来任务栏就把我的窗口挡下面了[/quote]
void gShowHideTaskBar(BOOL bHide /*=FALSE*/) 
{ 
	CRect rectWorkArea = CRect(0,0,0,0); 
	CRect rectTaskBar = CRect(0,0,0,0); 

	CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"), NULL); 

	if( bHide ) 
	{ 
		// Code to Hide the System Task Bar 
		SystemParametersInfo(SPI_GETWORKAREA, 
			0, 
			(LPVOID)&rectWorkArea, 
			0); 

		if( pWnd ) 
		{ 
			pWnd->GetWindowRect(rectTaskBar); 
			rectWorkArea.bottom += rectTaskBar.Height(); 
			SystemParametersInfo(SPI_SETWORKAREA, 
				0, 
				(LPVOID)&rectWorkArea, 
				0); 

			pWnd->ShowWindow(SW_HIDE); 
		} 
	} 
	else 
	{ 
		// Code to Show the System Task Bar 
		SystemParametersInfo(SPI_GETWORKAREA, 
			0, 
			(LPVOID)&rectWorkArea, 
			0); 
		if( pWnd ) 
		{ 
			pWnd->GetWindowRect(rectTaskBar); 
			rectWorkArea.bottom -= rectTaskBar.Height(); 
			SystemParametersInfo(SPI_SETWORKAREA, 
				0, 
				(LPVOID)&rectWorkArea, 
				0); 

			pWnd->ShowWindow(SW_SHOW); 
		} 
	} 
} 
你可以试试这个把下面的状态栏给全部隐藏。[/quote]我的意思是我的窗口覆盖在任务栏上。而且只覆盖了一部分,不是完全覆盖,[/quote]那就没有办法了 都是顶层都可以切换
cc___999 2016-03-29
  • 打赏
  • 举报
回复
引用 5 楼 WUYUAN2011WOAINI 的回复:
[quote=引用 4 楼 sx5486510 的回复:] [quote=引用 3 楼 WUYUAN2011WOAINI 的回复:] [quote=引用 2 楼 sx5486510 的回复:] [quote=引用 1 楼 WUYUAN2011WOAINI 的回复:]
        HWND hwnd = FindWindow("Shell_traywnd", NULL);
        EnableWindow(hwnd, false);
是这样的么?实测不行,[/quote]切换几次别的窗口之后任务栏就会重新跑到上面来,----------能解释下是怎么切换的嘛[/quote]软件打开,刚开始是能遮挡住任务栏。如果我点一下浏览器再点下任务栏,这样点几次下来任务栏就把我的窗口挡下面了[/quote]
void gShowHideTaskBar(BOOL bHide /*=FALSE*/) 
{ 
	CRect rectWorkArea = CRect(0,0,0,0); 
	CRect rectTaskBar = CRect(0,0,0,0); 

	CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"), NULL); 

	if( bHide ) 
	{ 
		// Code to Hide the System Task Bar 
		SystemParametersInfo(SPI_GETWORKAREA, 
			0, 
			(LPVOID)&rectWorkArea, 
			0); 

		if( pWnd ) 
		{ 
			pWnd->GetWindowRect(rectTaskBar); 
			rectWorkArea.bottom += rectTaskBar.Height(); 
			SystemParametersInfo(SPI_SETWORKAREA, 
				0, 
				(LPVOID)&rectWorkArea, 
				0); 

			pWnd->ShowWindow(SW_HIDE); 
		} 
	} 
	else 
	{ 
		// Code to Show the System Task Bar 
		SystemParametersInfo(SPI_GETWORKAREA, 
			0, 
			(LPVOID)&rectWorkArea, 
			0); 
		if( pWnd ) 
		{ 
			pWnd->GetWindowRect(rectTaskBar); 
			rectWorkArea.bottom -= rectTaskBar.Height(); 
			SystemParametersInfo(SPI_SETWORKAREA, 
				0, 
				(LPVOID)&rectWorkArea, 
				0); 

			pWnd->ShowWindow(SW_SHOW); 
		} 
	} 
} 
你可以试试这个把下面的状态栏给全部隐藏。[/quote]我的意思是我的窗口覆盖在任务栏上。而且只覆盖了一部分,不是完全覆盖,
kuankuan_qiao 2016-03-29
  • 打赏
  • 举报
回复
引用 4 楼 sx5486510 的回复:
[quote=引用 3 楼 WUYUAN2011WOAINI 的回复:] [quote=引用 2 楼 sx5486510 的回复:] [quote=引用 1 楼 WUYUAN2011WOAINI 的回复:]
        HWND hwnd = FindWindow("Shell_traywnd", NULL);
        EnableWindow(hwnd, false);
是这样的么?实测不行,[/quote]切换几次别的窗口之后任务栏就会重新跑到上面来,----------能解释下是怎么切换的嘛[/quote]软件打开,刚开始是能遮挡住任务栏。如果我点一下浏览器再点下任务栏,这样点几次下来任务栏就把我的窗口挡下面了[/quote]
void gShowHideTaskBar(BOOL bHide /*=FALSE*/) 
{ 
	CRect rectWorkArea = CRect(0,0,0,0); 
	CRect rectTaskBar = CRect(0,0,0,0); 

	CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"), NULL); 

	if( bHide ) 
	{ 
		// Code to Hide the System Task Bar 
		SystemParametersInfo(SPI_GETWORKAREA, 
			0, 
			(LPVOID)&rectWorkArea, 
			0); 

		if( pWnd ) 
		{ 
			pWnd->GetWindowRect(rectTaskBar); 
			rectWorkArea.bottom += rectTaskBar.Height(); 
			SystemParametersInfo(SPI_SETWORKAREA, 
				0, 
				(LPVOID)&rectWorkArea, 
				0); 

			pWnd->ShowWindow(SW_HIDE); 
		} 
	} 
	else 
	{ 
		// Code to Show the System Task Bar 
		SystemParametersInfo(SPI_GETWORKAREA, 
			0, 
			(LPVOID)&rectWorkArea, 
			0); 
		if( pWnd ) 
		{ 
			pWnd->GetWindowRect(rectTaskBar); 
			rectWorkArea.bottom -= rectTaskBar.Height(); 
			SystemParametersInfo(SPI_SETWORKAREA, 
				0, 
				(LPVOID)&rectWorkArea, 
				0); 

			pWnd->ShowWindow(SW_SHOW); 
		} 
	} 
} 
你可以试试这个把下面的状态栏给全部隐藏。
cc___999 2016-03-29
  • 打赏
  • 举报
回复
引用 3 楼 WUYUAN2011WOAINI 的回复:
[quote=引用 2 楼 sx5486510 的回复:] [quote=引用 1 楼 WUYUAN2011WOAINI 的回复:]
        HWND hwnd = FindWindow("Shell_traywnd", NULL);
        EnableWindow(hwnd, false);
是这样的么?实测不行,[/quote]切换几次别的窗口之后任务栏就会重新跑到上面来,----------能解释下是怎么切换的嘛[/quote]软件打开,刚开始是能遮挡住任务栏。如果我点一下浏览器再点下任务栏,这样点几次下来任务栏就把我的窗口挡下面了
kuankuan_qiao 2016-03-29
  • 打赏
  • 举报
回复
引用 2 楼 sx5486510 的回复:
[quote=引用 1 楼 WUYUAN2011WOAINI 的回复:]
        HWND hwnd = FindWindow("Shell_traywnd", NULL);
        EnableWindow(hwnd, false);
是这样的么?实测不行,[/quote]切换几次别的窗口之后任务栏就会重新跑到上面来,----------能解释下是怎么切换的嘛
kuankuan_qiao 2016-03-28
  • 打赏
  • 举报
回复
        HWND hwnd = FindWindow("Shell_traywnd", NULL);
        EnableWindow(hwnd, false);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧