设为首页 加入收藏

TOP

二、Windows按键消息—为SYSMETS加上键盘处理功能
2012-11-05 12:25:47 】 浏览:388
Tags:Windows 按键 消息 SYSMETS 加上 键盘 处理 功能

在编写第四章中三个版本的SYSMETS程序时,我们还不了解键盘,只能使用滚动条和鼠标来卷动文字。现在我们知道了处理键盘消息的方法,那么不妨在程序中加入键盘接口。显然,这是处理光标移动键的工作。我们将大多数光标键(Home、End、Page Up、Page Down、Up Arrow和Down Arrow)用于垂直卷动,左箭头键和右箭头键用于不太重要的水平卷动。

建立键盘接口的一种简单方法是在窗口消息处理程序中加入与WM_VSCROLL和WM_HSCROLL处理方式相仿,而且本质上相同的WM_KEYDOWN处理方法。不过这样子做是不聪明的,因为如果要修改滚动条的做法,就必须相对应地修改WM_KEYDOWN。

为什么不简单地将每一种WM_KEYDOWN消息都翻译成同等效用的WM_VSCROLL或者WM_HSCROLL消息呢?通过向窗口消息处理程序发送假冒消息,我们可能会让WndProc认为它获得了卷动信息。

在Windows中,这种方法是可行的。发送消息的函数叫做SendMessage,它所用的参数与传递到窗口消息处理程序的参数是相同的:

SendMessage (hwnd, message, wParam, lParam) ;

在呼叫SendMessage时,Windows呼叫窗口句柄为hwnd的窗口消息处理程序,并把这四个参数传给它。当窗口消息处理程序完成消息处理之后,Windows把控制传回到SendMessage呼叫之后的下一道叙述。您发送消息过去的窗口消息处理程序,可以是同一个窗口消息处理程序、同一程序中的其它窗口消息处理程序或者其它应用程序,中的窗口消息处理程序。

下面说明在SYSMETS程序中使用SendMessage处理WM_KEYDOWN代码的方法:

caseWM_KEYDOWN:            switch (wParam)           {            case   VK_HOME:                    SendMessage (hwnd, WM_VSCROLL, SB_TOP, 0) ;                    break ;            case   VK_END:                    SendMessage (hwnd, WM_VSCROLL, SB_BOTTOM, 0) ;                    break ;            case   VK_PRIOR:                    SendMessage (hwnd, WM_VSCROLL, SB_PAGEUP, 0) ;                    break ;        
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇三、Windows字符消息 下一篇二、Windows按键消息—使用按键消..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目