對於目標 Windows CE 的應用程式已經成為熱門儘可能使用 [量較小的掌形大小裝置螢幕。新的使用者介面 (UI) 的 PocketPC 平台需要應用程式使用整個螢幕區域的其他工作。
若要了解程式碼範例文件中的註解,描述新 PocketPC UI 詞彙:
- 工作列位於螢幕頂端、 顯示應用程式的標題,並可讓使用者存取,以啟動應用程式。
- 命令列也稱為功能表列是位於螢幕底部。
- [軟輸入的面板 (SIP)] 按鈕位於命令列的右下角的螢幕上。
若要達到盡可能使用最多螢幕視窗,應用程式會呼叫
SHFullScreen 若要隱藏這些項目。
注意: 若要讓對話方塊全螢幕模式,如果 [] 對話方塊中有任何控制項以 WS_TABSTOP 樣式集
SHFullScreen 將不隱藏 SIP] 按鈕。如果您注意到 SIP 按鈕意外無法隱藏,請參閱對話方塊方塊資源在資源編輯器中的,並檢視每個控制項的屬性] 對話方塊。請確認
停止定位點] 核取方塊未選取的所有控制項。
一般的 Win32 應用程式,會使用
CreateWindow 或
CreateWindowEx 函式,其主要 UI 呼叫
SHFullScreen 若要隱藏 imposing UI 項目,若要啟用完整的全螢幕模式涵蓋範圍呼叫
ShowWindow 函式,若要隱藏應用程式的命令列,並使用
MoveWindow 函式,以調整視窗的大小。
下列範例程式碼說明了這個方法。這個程式碼已經從 SHAPI Win32 Pocket PC SDK 範例適用。
#define MENU_HEIGHT 26
RECT rc;
//get window size
GetWindowRect(hWnd, &rc);
SHFullScreen(hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);
ShowWindow(hwndCB, SW_HIDE);
MoveWindow(hWnd,
rc.left,
rc.top-MENU_HEIGHT,
rc.right,
rc.bottom+MENU_HEIGHT,
TRUE);
注意: 若想還原原始應用程式的大小使用
SHFS_SHOWTASKBAR 和
SHFS_SHOWSIPBUTTON。不過,
MoveWindow 稱為與減少兩次
MENU_HEIGHT 底部參數。例如:
// Code to revert back to not full-screen:
RECT rc;
GetWindowRect(hWnd, &rc);
SHFullScreen(hWnd, SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON);
ShowWindow(hwndCB, SW_SHOW);
MoveWindow(hWnd,
rc.left,
rc.top+MENU_HEIGHT,
rc.right,
rc.bottom-(2*MENU_HEIGHT),
TRUE);
的 Win32 應用程式對話方塊
SHInitDialog 函式用於在處理常式
WM_INITDIALOG。隱藏使用者介面項目,並達成全螢幕模式的對話方塊,
SHInitDialog 與
SHFullScreen 函式一起使用:
case WM_INITDIALOG:
#define MENU_HEIGHT 26
SHINITDLGINFO shidi;
RECT rc;
shidi.hDlg = hDlg;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR;
SHInitDialog(&shidi);
GetWindowRect(hDlg, &rc);
MoveWindow(hDlg,
rc.left,
rc.top-MENU_HEIGHT,
rc.right,
rc.bottom,
TRUE);
SetForegroundWindow(hDlg);
SHFullScreen(hDlg, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);
下列討論如何執行類似工作從 MFC 應用程式內。有兩個主要類型的 Windows CE 對話方塊架構的 MFC 應用程式和 SDI 或文件/檢視支援應用程式。若要完成 SHAPI Win32 範例的示範,您必須存取 MFC 類別的資料成員。
下列說明針對文件/檢視類型的應用程式處理序。這個程式碼是用於將會以全螢幕模式來放置應用程式的命令處理常式:
void CMainFrame::OnFullscreen()
{
#define MENU_HEIGHT 26
RECT rc;
//get window size
GetWindowRect(&rc);
::SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);
::ShowWindow(this->m_hCommandBar, SW_HIDE);
MoveWindow(rc.left,
rc.top-MENU_HEIGHT,
rc.right,
rc.bottom+MENU_HEIGHT,
TRUE);
}
如果對話方塊是以覆蓋整個螢幕顯示,類似的程式碼會置於
OnInitDialog 處理常式。一項差異是 MFC 架構中的 PocketPC
CDialog 必須隱藏在建立空的命令列:
BOOL CMfctest2Dlg::OnInitDialog()
{
m_bFullScreen = FALSE;
CDialog::OnInitDialog();
// Call SHInitDialog with flags for full screen.
SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR;
shidi.hDlg = m_hWnd;
SHInitDialog(&shidi);
// Set the icon for this dialog box. The framework does this automatically
// when the application's main window is not a dialog box.
SetIcon(m_hIcon, TRUE); // Set big icon.
SetIcon(m_hIcon, FALSE); // Set small icon.
// TODO: Add extra initialization here.
::CommandBar_Show(m_pWndEmptyCB->m_hWnd, FALSE);
// SHFullScreen fails if dialog box is not foreground.
SetForegroundWindow();
SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);
// Resize the window over the taskbar area.
#define MENU_HEIGHT 26
RECT rect;
GetWindowRect(&rect);
rect.top -= MENU_HEIGHT;
MoveWindow(&rect, TRUE);
return TRUE;
}