WinCE全屏方法

1 将dialog属性中的styles的title bar去掉
在dialog初始化时加入:
int iFullWidth = GetSystemMetrics(SM_CXSCREEN); 
int iFullHeight = GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos(this->m_hWnd, HWND_TOPMOST, 0, 0, iFullWidth, iFullHeight, SWP_NOOWNERZORDER|SWP_SHOWWINDOW);

对于Pocket PC,也有类似的方法

MFC PocketPC应用程序全屏方法 vS1Lm'k8bg#k#g!H

基于对话框的MFC PocketPC应用程序全屏方法 ;H U rH#d@.g.b
r F*z,V*O8Z7Ch+Z^v
1.需要将整个窗口向上平移26个像素以到达屏幕顶部,同时使用SHFullScreen()函数隐藏任务栏; a4_;DMZ"h} t

在OnInitDialog()函数中添加如下语句:
RECT rc; +ib7}3DWr'q
  GetWindowRect(&rc); m,iR,G(|8nv|
  rc.top-=26;
MoveWindow(rc.left,rc.top,rc.right,rc.bottom,FALSE); //上移26像素
SHFullScreen(this->m_hWnd,SHFS_HIDETASKBAR); //隐藏任务栏
/M
2.防止使用Input Panel时任务栏出现;

说明,依据MSDN,在Input Panel活动时会发送WM_SETTING_CHANGE和WM_ACTIVATE两个消息。需要手工接管两个消息的处理保持全屏。 y5X#}5K:^A
  MFC类中,CDialog类由CWnd类直接派生,所以这里可以直接手工添加函数。

在主程序的对话框类*Dlg.h头文件中这个位置,加入这两项(声明这两个函数): Pyt6B,Y
  // Implementation
   protected:
  HICON m_hIcon; /T4{en!t6/b
'J~u~V{+K}x
        // Generated message map functions :Aa"_6[ja$x
        //{{AFX_MSG(CFullScreenDialogDlg)
      virtual BOOL OnInitDialog();
    virtual void OnSettingChange();  =====================================>1
 afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);  =========>2
     //}}AFX_MSG $^g3ZBu,W R(k)G6j+v
        DECLARE_MESSAGE_MAP()
 
在主程序的对话框类*Dlg.cpp实现文件中做如下修改: ^w(b k{f }
  (1)在消息映射处加入
6cN&yM1t%Z   BEGIN_MESSAGE_MAP(CFullScreenDialogDlg, CDialog) bv@(o!ag$A)KK
        //{{AFX_MSG_MAP(CFullScreenDialogDlg) 'AHa7Z}
        ON_WM_SETTINGCHANGE()  ========================================>1 N@c*Q;zJ.] VE
        ON_WM_ACTIVATE()  ============================================>2
     //}}AFX_MSG_MAP ;y TN y1z b
  END_MESSAGE_MAP()
 
手工添加这两个函数: u5bI?|;^
  void CFullScreenDialogDlg::OnSettingChange() 2s0Df-bmyz/Z
  {
T   } 1[{'X e/L-R`
e*q5L^ b
  void CFullScreenDialogDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 1BT _!U[xr
  {
CWnd::OnActivate(nState, pWndOther, bMinimized);  //注意这里从CWnd继承         We{b$n Tq
        SHFullScreen( this->m_hWnd, SHFS_HIDETASKBAR); }%Pa`0b)XX3Mi
  }

经过这样的修改,无论是使用Input Panel,还是热键运行其他程序后返回,都能够保持全屏。 $Ym7E?|D

附加:
如果有开发者希望屏蔽按下Esc和Enter键的退出,还需要添加这个PreTranslateMessage函数 8wA ` u2LI*B(x;wcX

BOOL CFullScreenDialogDlg:reTranslateMessage(MSG* pMsg) ebv2_1G"N1^A
    {
      if(pMsg->message==WM_KEYDOWN) @?GK!u Y`M
       {
if(pMSg->wParam==VK_RETURN) return TRUE; //回车键 U0k8p n0X t|4^
         if(pMsg->wParam==VK_ESCAPE) return TRUE; *O.nV1?)`J*p
       }
      return CDialog:reTranslateMessage(pMsg);
   } J*w8E/f f5s?qP#b

文档/视图结构的MFC程序
A^)`v
其中CMainFrame由CWnd派生,和刚才类似,在MainFrame中做对应修改就可以了。 |HJ&jc.{9w4z
将OnInitDialog()中的函数移到OnCreate()中。
 这里WM_ACTIVATE和WM_SETTINGCHANGE可以用类向导添加。
然后手工将OnSettingChange改为void类型。
k e#V r;d
对于Win32程序,PPC2003 SDK自带的例子Shellapidemo就有讲解!
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值