原创  Windows Mobile平台上重写Back健的行为 收藏

这个Back健的处理很奇怪,如果默认不做任何处理,即使当前Dialog上存在一个Edit Control,它还是不会充当回退删除健的角色,还是会关闭当前对话框,回退到上一个。解决的办法也很简单 按Back健时,OS会抛出一个WM_HOTKEY的消息出来,我们可以捕获这个消息重写Back健的行为

代码如下:


在OnInitDialog时 发送SHCMBM_OVERRIDEKEY 重写VK_BACK的行为。

HWND hwndMenuBar = SHFindMenuBar(m_hWnd);
SendMessage(hwndMenuBar, SHCMBM_OVERRIDEKEY, VK_TBACK, MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, SHMBOF_NODEFAULT | SHMBOF_NOTIFY));

然后在Dailog响应 WM_HOTKEY时进行如下处理:


LRESULT CMyDlg::OnHotKey(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if(VK_TBACK == HIWORD(lParam))
{
bHandled = true;
SHSendBackToFocusWindow(uMsg, wParam, lParam);
}
return 0;

基于WTL的框架编写,如果你使用原始SDK,自己稍作修改

发表于 @ 2007年07月04日 09:20:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:Symbian平台上按键精灵 | 新一篇:PocketPC中对话框的滚动条问题

  • 发表评论
  • 评论内容:
  •  
Copyright © luandao2000
Powered by CSDN Blog