当前位置: 首页 > news >正文

巴中做网站 微信开发应用商店下载

巴中做网站 微信开发,应用商店下载,人力资源网站怎么做,凌哥seo节点上一节我们讨论客户区的鼠标消息,本节我们讨论非客户区鼠标消息。如果鼠标位于窗口内部除客户区外的其他区域,Windows就会向窗口过程发送一个“非客户区”鼠标消息。窗口的非客户区包括标题栏、菜单和窗口滚动条。 本节必须掌握的知识点: 非…

上一节我们讨论客户区的鼠标消息,本节我们讨论非客户区鼠标消息。如果鼠标位于窗口内部除客户区外的其他区域,Windows就会向窗口过程发送一个“非客户区”鼠标消息。窗口的非客户区包括标题栏、菜单和窗口滚动条。

本节必须掌握的知识点:

        非客户区鼠标消息

6.3.1 非客户区鼠标消息

非客户区鼠标消息是指在 Windows 操作系统中,当鼠标位于窗口的非客户区域时发送的鼠标相关的消息。非客户区指的是窗口周围的边框和标题栏等区域,与窗口的客户区(即窗口内部可显示内容的区域)相对。

以下是一些常见的非客户区鼠标消息:

事件

消息

鼠标经过

WM_NCMOUSEMOVE

击中测试

WM_NCHITTEST

左键

WM_NCLBUTTONDOWNWM_NCLBUTTONUP

WM_NCLBUTTONDBLCLK(双击)

中键

WM_NCMBUTTONDOWNWM_NCMBUTTONUP

WM_NCMBUTTONDBLCLK(第二次按下)

右键

WM_NCRBUTTONDOWNWM_NCRBUTTONUPWM_NCRBUTTONDBLCLK

●WM_NCHITTEST:在鼠标移动时通知应用程序进行命中测试,以确定鼠标在非客户区的哪个位置。这个消息用于确定鼠标是否位于窗口的边框、标题栏、大小调整框等位置。

●WM_NCLBUTTONDOWN:通知应用程序鼠标左键在非客户区按下。这个消息用于响应用户在非客户区按下鼠标左键的操作。

●WM_NCLBUTTONUP:通知应用程序鼠标左键在非客户区释放。这个消息用于响应用户释放非客户区鼠标左键的操作。

●WM_NCLBUTTONDBLCLK:通知应用程序在非客户区(窗口边框和标题栏等区域)接收到鼠标左键双击事件。这个消息来响应非客户区的鼠标左键双击事件。

●WM_NCMBUTTONDOWN:通知应用程序在非客户区(窗口边框和标题栏等区域)接收到鼠标中键(鼠标滚轮按钮)按下事件。这个消息来响应非客户区的鼠标中键按下事件。

●WM_NCMBUTTONUP:通知应用程序在非客户区(窗口边框和标题栏等区域)接收到鼠标中键(鼠标滚轮按钮)释放事件。这个消息来响应非客户区的鼠标中键释放事件。

●WM_NCMBUTTONDBLCLK:通知应用程序在非客户区(窗口边框和标题栏等区域)接收到鼠标中键(鼠标滚轮按钮)双击事件。这个消息来响应非客户区的鼠标中键双击事件。

●WM_NCRBUTTONDOWN:通知应用程序鼠标右键在非客户区按下。这个消息用于响应用户在非客户区按下鼠标右键的操作。

●WM_NCRBUTTONUP:通知应用程序鼠标右键在非客户区释放。这个消息用于响应用户释放非客户区鼠标右键的操作。

●WM_NCRBUTTONDBLCLK:通知应用程序在非客户区(窗口边框和标题栏等区域)接收到鼠标右键双击事件。这个消息来响应非客户区的鼠标右键双击事件。

这些消息提供了与非客户区鼠标交互相关的信息,应用程序可以根据这些消息来处理非客户区的鼠标事件。通过捕获和处理这些消息,应用程序可以实现自定义的非客户区行为,如拖动窗口、改变窗口大小、自定义标题栏按钮等。

数 wParam和参数IParam

非客户区鼠标消息的参数wParam和IParam与客户区鼠标消息的参数有些不同。

wParam(窗口的哪个部位)

20多个位置,见MSDN

lParam(鼠标屏幕坐标)

HTCLINET  客户区

HTNOWHERE 不在任何窗口

HTRANSPARENT 被另一个窗口覆盖

HTERROR  使函数DefWindowProc产生警示声

……

Pt.x =LOWORD(lParam);

Pt.y =HIWORD(lParam);

//屏幕坐标与客户区坐标转换

ScreenToClient(hwnd,&pt);

ClientToScreen(hwnd,&pt);

●参数 wParam表示非客户区鼠标移动或单击的位置。它的值被设定成一个以HT为首的标识符, 其中HT表示“击中测试”(hit-test)。这些标识符都定义在WINUSER.H头文件中。

●参数IParam的低位字包含x坐标,高位字包含y坐标。但是,这些坐标都是屏幕坐标, 而不是前面客户区鼠标消息中的客户区坐标。对屏幕坐标来说,显示区域左上角的x和y 都是0。向右表示x值增加的方向,而沿屏幕向下表示y值增加的方向。

利用下面两个Windows函数,可以将屏幕坐标与客户区坐标相互转换:

ScreenToClient (hwnd, &pt);

ClientToScreen (hwnd, &pt);

其中pt是一个POINT结构。这两个函数转换POINT结构中保存的坐标值,且不保留过去的值。

【注意】如果一个屏幕坐标点位于窗口客户区的上方或者左方,那么转换成客户区坐标 后,x值或y值会是负数。

击中测试消息

       WM_NCHITTEST消息表示“非客户区击中测试”(nonclient hit test)。这个消息的优先级高于其他所有的客户区和非客户区鼠标消息。参数IParam包含鼠标位置的屏幕坐标x和y。 参数wParam没有用到。

Windows应用程序通常会把这个消息发送给DefWindowProc。然后Windows会利用 WM_NCHITTEST消息来产生所有其他和鼠标位置相关的鼠标消息。对非客户区消息来说, DefWindowProc处理WM_NCHITTEST消息后返回一个可用于鼠标消息参数wParam的值。 这个返回值可以是任何一个非客户区鼠标消息的wParam参数的值,也可以是如下所示的一些值:

HTCLIENT             客户区

HTNOWHERE       不在任何窗口

HTTRANSPARENT 被另一个窗口覆盖的窗口

HTERROR             使函数DefWindowProc产生一个警示声

如果 DefWindowProc 在处理 WM_NCHITTEST 消息之后返回 HTCLIENT,则 Windows 会将屏幕坐标转换成客户区坐标,并产生一个客户区鼠标消息。

你可能记得如何利用捕捉WM_SYSKEYDOWN消息,使所有的系统键盘函数失效。 也许你会想,可不可以利用捕捉鼠标消息来实现类似的功能呢?当然可以!如果在窗口过程中包含下面几行语句:

case WM_NCHITTEST:

return (LRESULT) HTNOWHERE ;

那么程序就能够有效地阻止系统向窗口发送所有客户区和非客户区鼠标消息。此时,无论 鼠标位于窗口的任何位置,包括系统菜单、图标、调整大小按钮和关闭按钮,鼠标按钮操作都将失效。(参见第35练实例CONNECT.C。)

       ■消息引发消息

       Windows利用WM_NCHITTEST消息来产生其他所有的鼠标消息。这种消息引发消息的思想在Windows中很常见。举一个例子来说,双击Windows程序的系统菜单图标可以关闭这个窗口。双击产生了一系列WM_NCHITTEST消息。鼠标位于系统菜单图标之上,所以DefWindowProc返回HTSYSMENU,这时Windows在消息队列中添加了一个 WM_NCLBUTTONDBLCLIK 消息,其中参数 wParam 等于 HTSYSMENU。

窗口过程一般将这个消息发送给DefWindowProc。当DefWindowProc接收到参数 wParam为HTSYSMENU的WM_NCLBUTTONDBLCLK消息时,系统会在消息队列中添加一个WM_SYSCOMMAND消息,其中参数wParam等于SC_CLOSE。(当用户选择系统菜单中的关闭按钮时,也产生WM_SYSCOMMAND消息。然后,通常窗口过程再将这个消息发送给DefWindowProc。DefWindowProc处理这个消息,并向窗口发送WM_CLOSE 消息。

如果想在结束程序之前等待用户的确认,窗口过程可以捕捉WM_CLOSE消息。否则, DefWindowProc会调用DestroyWindow函数来处理WM_CLOSE消息。除了其他处理, DestroyWindow还会向窗口过程发送一个WM_DESTROY消息。在正常情况下,窗口过程处理WM_DESTROY消息的代码如下:

case WM_DESTROY:

       PostQuitMessage (0);

return 0;

PostQuitMessage函数使Windows在消息队列中添加一个WM_QUIT消息。窗口过程不会接收到这个消息,因为它会导致GetMessage函数返回0,从而结束了消息循环.整个程序也就退出了。

http://www.dinnco.com/news/24335.html

相关文章:

  • 阳泉建设网站的公司如何把品牌推广出去
  • 手机移动端网站建设网站设计方案模板
  • 如何和网站建设者联系想找搜索引擎优化
  • 做门户网站价格全网营销渠道
  • 开公司要什么条件aso优化技巧
  • 专业制作网站多少钱网络营销常用的工具和方法
  • 网站开发提供图片加载速度seo是什么?
  • 九江 网站建站 设计 公司windows优化大师收费吗
  • python 做网站合适吗企业网络营销推广方案策划
  • 网站管家线上营销渠道有哪些
  • 外贸建站模板免费网络推广平台软件app
  • 本地网站做淘宝客北京sem
  • 如何做英文版网站logo网站设计
  • 建网站培训学校营销软文写作
  • 安阳市哪里做网站建设广西关键词优化公司
  • 郑州建设教育培训中心网站重庆seo搜索引擎优化优与略
  • 余姚网站建设设计广告营销策略有哪些
  • 国内公关公司昆明百度搜索排名优化
  • dede网站不能访问seo项目分析
  • 市场营销计划广州网站优化价格
  • 陕西高端品牌网站建设青岛seo关键字排名
  • 电子商务网站开发实务企业品牌推广网站
  • 网站备案 假通信地址搜索引擎优化员简历
  • 企业网站建设套餐 网络服务进行网络推广
  • 电大的网站界面ui设计训练怎么做营销渠道策划方案
  • 宁波网站网站建设国内搜索引擎网站
  • 网站程序开发seo怎么做新手入门
  • 网站如何运营赚钱长沙企业网站设计
  • 模板网字体库seo观察网
  • wordpress分类导航主题草根seo博客