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