WEB开发网
开发学院手机开发Windows Mobile 开发 Windows Mobile平台上重写Back健的行为 阅读

Windows Mobile平台上重写Back健的行为

 2010-08-22 12:56:00 来源:WEB开发网   
核心提示:例如,我们要把后退键的缺省行为去掉,Windows Mobile平台上重写Back健的行为(2),并希望当按下后退键时,会向当前窗口发送WM_HOTKEY的消息,如果MenuBar被销毁,则改变后退键的行为会自动终止,那么,我们可以这么做:SendMessage (SHFindMenuBar (hWnd), SHCMB

例如,我们要把后退键的缺省行为去掉,并希望当按下后退键时,会向当前窗口发送WM_HOTKEY的消息,那么,我们可以这么做:

SendMessage (SHFindMenuBar (hWnd), SHCMBM_OVERRIDEKEY, VK_TBACK,

MAKELPARAM (SHMBOF_NODEFAULT | SHMBOF_NOTIFY,

SHMBOF_NODEFAULT | SHMBOF_NOTIFY));

SHMBOF_NODEFAULT是去掉后退键的缺省行为,SHMBOF_NOTIFY是要向窗口发送键按下的消息。

MAKELPARAM宏的第一个参数是低字,第二个参数是高字。

如果我们只是要去掉后退键的缺省行为,而不需要后退键向窗口发送WM_HOTKEY的消息,可以这么做:

SendMessage (SHFindMenuBar (hWnd), SHCMBM_OVERRIDEKEY, VK_TBACK,

MAKELPARAM (SHMBOF_NODEFAULT | SHMBOF_NOTIFY,

SHMBOF_NODEFAULT));

如果要恢复后退键的缺省行为,可以这么做:

SendMessage (SHFindMenuBar (hWnd), SHCMBM_OVERRIDEKEY, VK_TBACK,

MAKELPARAM (SHMBOF_NODEFAULT | SHMBOF_NOTIFY,

0));

窗口收到的WM_HOTKEY消息中,wParam表示按下的键,如下表所示:

KeyValue

VK_TSOFT10

VK_TSOFT21

VK_TBACK2

VK_TVOLUMEUP3

VK_TVOLUMEDOWN4

VK_TRECORD5

lParam也含有按下键的值,但是有所区别。lParam中,高字表示按下的键值,低字则表示按下值的其他标志,对于Smartphone有用的是标志是MOD_KEYUP,表示键已经被释放了。

当我们收到WM_HOTKEY消息时,需要处理删除字符的操作,此时,不需要我们自己写代码完成,只需要调用系统提供的一个函数即可:

void SHSendBackToFocusWindow (UINT uMsg, WPARAM wp, LPARAM lp);

所以,我们处理WM_HOTKEY消息的代码可以这么写:

case WM_HOTKEY:

if (HIWORD (lParam) == VK_TBACK)

SHSendBackToFocusWindow (wMsg, wParam, lParam);

这样,就会删除最后的字符了。

最后一点,如果MenuBar被销毁,则改变后退键的行为会自动终止,不需要再写恢复代码。

BOOL InitWindow(

const HWND hDlg,

UINT nToolBarId

)

{

// Specify that the dialog box should stretch full screen

上一页  1 2 3 4  下一页

Tags:Windows Mobile 平台

编辑录入:coldstar [复制链接] [打 印]
赞助商链接