在WinCe下讓程式全屏,掩蓋掉Start那一欄工具列

來源:互聯網
上載者:User
 在WinCe下讓程式全屏,掩蓋掉Start那一欄工具列

修改工作列
[HKEY_LOCAL_MACHINESoftwareMicrosoftShellAutoHide] 3I };?9w!q'{9n
"Default"=dword:1
[HKEY_LOCAL_MACHINESoftwareMicrosoftClock] U h j L0b'?#/
"SHOW_CLOCK"=dword:0
[HKEY_LOCAL_MACHINESoftwareMicrosoftShellOnTop]
"Default"=dword:0
或者:
1 將dialog屬性中的styles的title bar去掉
2 在dialog初始化時加入:
int iFullWidth = GetSystemMetrics(SM_CXSCREEN);
int iFullHeight = GetSystemMetrics(SM_CYSCREEN); u v ? P6| G y/gv
::SetWindowPos(this->m_hWnd, HWND_TOPMOST, 0, 0, iFullWidth, iFullHeight, SWP_NOOWNERZORDER|SWP_SHOWWINDOW);

MFC PocketPC應用程式全屏方法
基於對話方塊的MFC PocketPC應用程式全屏方法
G E0? k
1.需要將整個視窗向上平移26個像素以到達螢幕頂部,同時使用SHFullScreen()函數隱藏工作列; F R et /:x6H C

在OnInitDialog()函數中添加如下語句:
RECT rc;e5d D w rl } S ["[2R
   GetWindowRect(&rc);
rc.top-=26;
MoveWindow(rc.left,rc.top,rc.right,rc.bottom,FALSE); //上移26像素
SHFullScreen(this->m_hWnd,SHFS_HIDETASKBAR); //隱藏工作列
-i,y i1g*~9_ ? z
2.防止使用Input Panel時工作列出現; Q i$~ e5}
  
說明,依據MSDN,在Input Panel活動時會發送WM_SETTING_CHANGE和WM_ACTIVATE兩個訊息。需要手工接管兩個訊息的處理保持全屏。
   MFC類中,CDialog類由CWnd類直接派生,所以這裡可以直接手工添加函數。
在主程式的對話方塊類*Dlg.h標頭檔中這個位置,加入這兩項(聲明這兩個函數):
// Implementation%c6h(I-L7m(o(U&`"v8K9U
protected:
HICON m_hIcon;
// Generated message map functions t X l B.U X } X z:|
//{{AFX_MSG(CFullScreenDialogDlg)8D u:y |)T /
       virtual BOOL OnInitDialog(); h /4~9k,X+u O:G
       virtual void OnSettingChange();   =====================================>1 R _ O(I k F Y;k r
       afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);   =========>2,J0O g;{ N Z
       //}}AFX_MSGC8q f:g+J P3B
       DECLARE_MESSAGE_MAP()0G a B)k y e5{
   
在主程式的對話方塊類*Dlg.cpp實現檔案中做如下修改: p b ~1n4C c;y
   (1)在訊息映射處加入
BEGIN_MESSAGE_MAP(CFullScreenDialogDlg, CDialog)
//{{AFX_MSG_MAP(CFullScreenDialogDlg)
ON_WM_SETTINGCHANGE()   ========================================>1
ON_WM_ACTIVATE()   ============================================>2
//}}AFX_MSG_MAP
END_MESSAGE_MAP()0J+x2R2|$A,_ R g6C-{

手工添加這兩個函數: / Z W i y$y
   void CFullScreenDialogDlg::OnSettingChange()7O l:W M e r(M F
   { o / `;X /5o!`6E:` J
   }
void CFullScreenDialogDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) j q!P m;s v J
   {
        CWnd::OnActivate(nState, pWndOther, bMinimized);   //注意這裡從CWnd繼承       :P5m { [2F"B P t
       SHFullScreen( this->m_hWnd, SHFS_HIDETASKBAR); E N f x(O E"/ u.o _ _
   }5W-D1t.u(R:@
經過這樣的修改,無論是使用Input Panel,還是熱鍵運行其他程式後返回,都能夠保持全屏。
附加:
如果有開發人員希望屏蔽按下Esc和Enter鍵的退出,還需要添加這個PreTranslateMessage函數 E p f1u p;C
4l1Z _ / |#l&F w S)|
BOOL CFullScreenDialogDlg:reTranslateMessage(MSG* pMsg) B Q!u N)? ? X u
{ RL ] W J c.k _
   if(pMsg->message==WM_KEYDOWN)
   {"g Z9x } _9n / i0S /
      if(pMSg->wParam==VK_RETURN) return TRUE; //斷行符號鍵
         {         
              if(pMsg->wParam==VK_ESCAPE) return TRUE;
           }
         return CDialog:reTranslateMessage(pMsg); Z$E8j8P7}
}
文檔/視圖結構的MFC程式
其中CMainFrame由CWnd派生,和剛才類似,在MainFrame中做對應修改就可以了。1A c4n {8將OnInitDialog()中的函數移到OnCreate()中。 N a.| [C,Y8E
這裡WM_ACTIVATE和WM_SETTINGCHANGE可以用類嚮導添加。
然後手工將OnSettingChange改為void類型。3t S8]7Z5G j

對於Win32程式,PPC2003 SDK內建的例子Shellapidemo就有講解!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.