;修改任务栏 p:v-j'^h
[HKEY_LOCAL_MACHINESoftwareMicrosoftShellAutoHide] mK3SD0Ydl~ A5I
"Default"=dword:1 C&Z"O$c"LW1p:n:M4Y
[HKEY_LOCAL_MACHINESoftwareMicrosoftClock]
"SHOW_CLOCK"=dword:0
[HKEY_LOCAL_MACHINESoftwareMicrosoftShellOnTop] #Y6R*uB-F3S8u([
"Default"=dword:0Q|^.x:S1o6[8Z
或者:
1 将dialog属性中的styles的title bar去掉
2 在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); //隐藏任务栏
`z;F&[D7i5t/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)在消息映射处加入
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
;yTN y1z b
END_MESSAGE_MAP()
手工添加这两个函数:
u5bI?|;^
void CFullScreenDialogDlg::OnSettingChange()
2s0Df-bmyz/Z
{
}
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$nTq
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类型。
2^(k e#V r;d
对于Win32程序,PPC2003 SDK自带的例子Shellapidemo就有讲解!
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
wince 截全屏、截屏工具
需要给PDA上的应用程序的截图,想到电脑可以截屏,那么运行环境为ploads/wceui_capturescreen.zip
WINCE Windows 应用程序 好用 -
wince 驱动调试编译方法
条件编译命令常用的有以下形式:#ifdef 标识符 程序段1#else 程序段2#endif它的作用是当所指定的标识符已经被#define命令定义过,则在程
WINCE 调试方法 #define 编译程序 程序段 -
HTML全屏JS方法
HTML 全屏一键开启关闭JS方法
javascript html 前端 -
电脑全屏的方法
x
电脑全屏 右键 -
WinCE中串口通讯的调试方法
<br />串口是嵌入式系统中应用很广的一种通讯接口。在WinCE中,通常会有一个串口供调试
wince 通讯 嵌入式 mobile -
wince驱动快速编译调试的方法
这段时间在学习wince驱动开发,但是每次wince编译都要很久,浪 release dictionary,
wince驱动 应用程序 搜索 驱动开发