// 隐藏命令栏,命令栏是屏幕最下边的一条
HWND hWnd = SHFindMenuBar(m_hWnd);
::CommandBar_Show(hWnd, FALSE);
如果对话框不在最前面,那么SHFullScreen()函数会失败
SetForegroundWindow();
隐藏任务栏,任务栏是屏幕最上边的一条
SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON|SHFS_HIDESTARTICON);
Resize the window over the taskbar area.
CRect rcScreen;
rcScreen.SetRect( 0,
0,
GetSystemMetrics( SM_CXSCREEN ),
GetSystemMetrics( SM_CYSCREEN ));
MoveWindow(&rcScreen, TRUE);
隐藏输入面板
SIPINFO si;
memset(&si, 0, sizeof(SIPINFO));
si.cbSize = sizeof(SIPINFO);
SHSipInfo(SPI_GETSIPINFO, 0, &si, 0);
if (si.fdwFlags & SIPF_ON)
{
si.cbSize = sizeof(SIPINFO);
si.fdwFlags = SIPF_OFF;
SHSipInfo(SPI_SETSIPINFO, 0, &si, 0);
}
//隐藏输入法图标
SHFullScreen(m_hWnd, SHFS_HIDESIPBUTTON);
// 隐藏输入法栏
CWnd* pWndSIP = FindWindow( _T("menu_worker"), NULL );
if ( pWndSIP )
{
pWndSIP->ShowWindow(SW_HIDE);
}
2、显示
在很多时候,我们仅需要隐藏任务栏,而对下方的输入法栏并不需要隐藏,如手机QQ的做法.但是在这个时候,弹出输入法软键盘的时候,屏幕上窗口将会自动向下收缩并露出上方被隐藏任务栏的区域.解决方法是在主窗口里响应 WM_WININICHANGE 消息即可,不需要在里面添加自定义代码,如下:
// 按动输入法时不自动弹出任务栏
void CMainFrame::OnWinIniChange(LPCTSTR lpszSection)
{
CFrameWnd::OnWinIniChange(lpszSection);
// TODO: 在此处添加消息处理程序代码
}
//显示输入法图标
SHFullScreen(m_hWnd, SHFS_SHOWSIPBUTTON);
// 显示输入法栏
CWnd* pWndSIP = FindWindow( _T("menu_worker"), NULL );
if ( pWndSIP )
{
pWndSIP->ShowWindow(SW_SHOW);
}