在WinCe下让程序全屏,掩盖掉Start那一栏工具栏【转】

在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就有讲解!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值