文章編號: 266244 - 上次校閱: 2005年8月19日 - 版次: 4.2

如何建立 [PocketPC 的全螢幕模式應用程式

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊

結論

文件清楚地說明如何使用非 Microsoft 基礎類別 MFC 的 Win32 應用程式中的 SHFullScreen API,在 [PocketPC 上建立全螢幕視窗。不過,文件不會說明以 MFC 為基礎的應用程式相同的程序。本文將告訴您,如何使用 Win32 API 或 MFC 讓完整過濾應用程式] 的 [PocketPC。

其他相關資訊

對於目標 Windows CE 的應用程式已經成為熱門儘可能使用 [量較小的掌形大小裝置螢幕。新的使用者介面 (UI) 的 PocketPC 平台需要應用程式使用整個螢幕區域的其他工作。

若要了解程式碼範例文件中的註解,描述新 PocketPC UI 詞彙:
  • 工作列位於螢幕頂端、 顯示應用程式的標題,並可讓使用者存取,以啟動應用程式。
  • 命令列也稱為功能表列是位於螢幕底部。
  • [軟輸入的面板 (SIP)] 按鈕位於命令列的右下角的螢幕上。
若要達到盡可能使用最多螢幕視窗,應用程式會呼叫 SHFullScreen 若要隱藏這些項目。

注意: 若要讓對話方塊全螢幕模式,如果 [] 對話方塊中有任何控制項以 WS_TABSTOP 樣式集 SHFullScreen 將不隱藏 SIP] 按鈕。如果您注意到 SIP 按鈕意外無法隱藏,請參閱對話方塊方塊資源在資源編輯器中的,並檢視每個控制項的屬性] 對話方塊。請確認 停止定位點] 核取方塊未選取的所有控制項。

一般的 Win32 應用程式,會使用 CreateWindowCreateWindowEx 函式,其主要 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_SHOWTASKBARSHFS_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。隱藏使用者介面項目,並達成全螢幕模式的對話方塊,SHInitDialogSHFullScreen 函式一起使用:
     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;
}
				

這篇文章中的資訊適用於:
  • Microsoft Office 鍵盤?應用於:
    • Microsoft Windows CE Platform SDK for Pocket PC
關鍵字:?
kbmt kbhowto KB266244 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:266244? (http://support.microsoft.com/kb/266244/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
Retired KB Article依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。