Dialog 模式:
在OnInitDialog()内:
BOOL CUbiMessageDialog::OnInitDialog()
{
m_bFullScreen = FALSE; //
CDialog::OnInitDialog();
SHINITDLGINFO shidi;
memset(&shidi, 0, sizeof(SHINITDLGINFO));
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR|SHIDIF_DONEBUTTON;
shidi.hDlg = m_hWnd;
::SHInitDialog(&shidi);
SetForegroundWindow();
SHFullScreen(m_hWnd, SHFS_HIDESIPBUTTON);
}
Frame/Document/View 模式:
void SetFullScreen(HWND hWnd)
{
RECT rc;
::GetWindowRect(hWnd,&rc);
SetRect(&rc,rc.left,rc.top,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
// 用來隐藏菜單欄的
//HWND hCommandBarWnd = ::FindWindowW( _T("menu_worker"), NULL );
//::CommandBar_Show(hCommandBarWnd, FALSE);
//VERIFY(SHFullScreen(m_hWnd, SHFS_HIDETASKBAR));
//VERIFY(SHFullScreen(m_hWnd, SHFS_HIDESTARTICON));
::SetForegroundWindow(hWnd);
VERIFY(SHFullScreen(hWnd, SHFS_HIDESIPBUTTON));
::MoveWindow(hWnd,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top,TRUE); //視窗最大化
}
隐藏系統菜單:
static BOOL CALLBACK MyEnumProc(HWND hwnd,LPARAM lParam)
{
int action = (int)lParam;
wchar_t szClassName[256];
GetClassName(hwnd,szClassName,256);
if(!wcscmp(szClassName,L"menu_worker")){
ShowWindow(hwnd, action);
}
else if(!wcscmp(szClassName,L"MS_SIPBUTTON")){
ShowWindow(hwnd, action);
}
//else if(!wcscmp(szClassName,L"HHTaskBar")){
// ShowWindow(hwnd, SW_SHOW);
//}
return TRUE;
}
void ShowSystemMenu(BOOL bShow)
{
int action = bShow?SW_SHOW:SW_HIDE;
EnumWindows(MyEnumProc,(LPARAM)action);
}
MS_SIPBUTTON:下方中間的拼字那個視窗
menu_worker:下方的帶顔色的長條,不算中間的拼字
HHTaskBar:上方的任務條
參考資料:
http://www.devdiv.net/viewthread.php?tid=10734