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();的调用时机.