2024年4月19日发(作者:)
本文主要介绍用WceUi界面库实现类似手机上的Home键
1.什么是Home键,Home键有什么用
在手机或者有的PND机器上,您直接按一个键(手机上通常是挂机那个红色
的按键),就可以返回到主界面,这个键我们通常叫做Home键.
实现Home键的涉及到的情况比较多,并且在不同的情况下有不同的处理.
a).窗口直接隐藏,把程序转到后台,比如说您当前在播放音乐的界面,用户
按了一下Home键.
b).程序直接退出
c).当前是界面是主界面的子界面,需要退出子界面(可能有不止一层子界
面),返回到主界面.
本文主要解释C这种情况
界面库的实现原理
WceUi界面库是采用DirectHWND的, 通常界面是由一个或者多个CWceUiDlg
组成.
多个CWceUiDlg是有层次关系的,最后弹出的对话框显示在最上面,
假设目前有三个界面Main->A->B, A在Main之上,B在A之上,Main是主界
面,如果我们在这个状态下想返回到主界面的话,需要先退出B,然后退出A,然后
就到了Main主界面上了.
您可以这样实现: A在收到Home键消息后,会结束DoModal,返回到B,B检查
A对话框DoModal的返回值,如果A是因为Home键退出的,那么B也退出.
如果您们的程序中常常会用到退到主界面的功能,封装一个通用的类是一个
比较好的选择.
我们封装的思想大概是:
1.窗口收到Home键按下的消息
2.窗口至下而上遍历所有CWceUiDlg,标记需要退出,遍历到最上面的对话
框时,直接把最上面的对话框退出
3.当最上层的界面退出后,下层的界面检查是不是需要退出,如果需要退出,
则也退出本界面.
举例:
1.窗口收到Home键按下的消息
2.标记A需要退出,B是最上面的界面,B直接退出
3.界面B退出会返回到界面A中,界面A检查当前已经标记退出,则退出A,
这样就返回到了主界面.
附件中有实现的的完整代码,如果您的界面需要有退回到主界面的功能,可
以直接继承CDirectDlg
代码的关键部分为:
LRESULT CMainWnd::OnMessage(UINT message, WPARAM wParam, LPARAM
lParam)的实现代码
CDirectDlg的实现代码
CheckQuit();的调用时机.
发布评论