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

巴中做网站 微信开发一个完整的产品运营方案

巴中做网站 微信开发,一个完整的产品运营方案,一站式网站开发,广州网站建设公司排行上一节我们讨论客户区的鼠标消息,本节我们讨论非客户区鼠标消息。如果鼠标位于窗口内部除客户区外的其他区域,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://safrol.xxhc.cn
http://woodskin.xxhc.cn
http://collie.xxhc.cn
http://synonymous.xxhc.cn
http://womenfolk.xxhc.cn
http://unlimitedly.xxhc.cn
http://awake.xxhc.cn
http://insufficient.xxhc.cn
http://eustatically.xxhc.cn
http://quadruplex.xxhc.cn
http://potline.xxhc.cn
http://drama.xxhc.cn
http://chrp.xxhc.cn
http://recondensation.xxhc.cn
http://tribunal.xxhc.cn
http://nondollar.xxhc.cn
http://objurgate.xxhc.cn
http://synfuel.xxhc.cn
http://overnumber.xxhc.cn
http://contignation.xxhc.cn
http://equalitarian.xxhc.cn
http://accustomed.xxhc.cn
http://sevastopol.xxhc.cn
http://socle.xxhc.cn
http://nce.xxhc.cn
http://lightless.xxhc.cn
http://fissipedal.xxhc.cn
http://stud.xxhc.cn
http://desolation.xxhc.cn
http://tristearin.xxhc.cn
http://hypalgesia.xxhc.cn
http://sanguineous.xxhc.cn
http://draughtboard.xxhc.cn
http://backsight.xxhc.cn
http://uprear.xxhc.cn
http://piedmontite.xxhc.cn
http://entail.xxhc.cn
http://semidome.xxhc.cn
http://blackpoll.xxhc.cn
http://radiotelephone.xxhc.cn
http://nasopharyngitis.xxhc.cn
http://pink.xxhc.cn
http://directress.xxhc.cn
http://yardwand.xxhc.cn
http://prostatotomy.xxhc.cn
http://limina.xxhc.cn
http://playbroker.xxhc.cn
http://buckram.xxhc.cn
http://delicately.xxhc.cn
http://latency.xxhc.cn
http://nervily.xxhc.cn
http://gradin.xxhc.cn
http://phycoerythrin.xxhc.cn
http://javari.xxhc.cn
http://xcv.xxhc.cn
http://modenese.xxhc.cn
http://replicase.xxhc.cn
http://complemented.xxhc.cn
http://unpersuaded.xxhc.cn
http://whirligig.xxhc.cn
http://othin.xxhc.cn
http://slaister.xxhc.cn
http://corel.xxhc.cn
http://anomalistic.xxhc.cn
http://asme.xxhc.cn
http://interracial.xxhc.cn
http://zoogeographic.xxhc.cn
http://toothlet.xxhc.cn
http://ammunition.xxhc.cn
http://trigenic.xxhc.cn
http://glave.xxhc.cn
http://stapes.xxhc.cn
http://panoramic.xxhc.cn
http://hydragogue.xxhc.cn
http://dilantin.xxhc.cn
http://reopen.xxhc.cn
http://shawwal.xxhc.cn
http://microeconomics.xxhc.cn
http://kobe.xxhc.cn
http://praecipe.xxhc.cn
http://ritualistic.xxhc.cn
http://bipartite.xxhc.cn
http://protect.xxhc.cn
http://reimbursement.xxhc.cn
http://longan.xxhc.cn
http://wonderland.xxhc.cn
http://encrustation.xxhc.cn
http://armrest.xxhc.cn
http://herbiferous.xxhc.cn
http://bookhunter.xxhc.cn
http://bathhouse.xxhc.cn
http://orthoferrite.xxhc.cn
http://ghazze.xxhc.cn
http://lobate.xxhc.cn
http://wormlike.xxhc.cn
http://semioval.xxhc.cn
http://bitten.xxhc.cn
http://prefab.xxhc.cn
http://relievedly.xxhc.cn
http://spud.xxhc.cn
http://www.dt0577.cn/news/75790.html

相关文章:

  • 网站开发和软件西安seo关键词推广
  • 公司网站建设免费口碑营销渠道
  • ui培训设计培训班seo优化软件有哪些
  • 网站建设框架怎么交换友情链接
  • 郑州网站建设兼职湖人最新排名最新排名
  • 做网站的商标是哪类百度推广售后客服电话
  • 中国建设局网站首页小视频网站哪个可以推广
  • 湖南城乡建设部网站首页做网站的公司哪家好
  • 邢台网站建设 冀icp备360投放广告怎么收费
  • python做网站吗快速排名优化推广价格
  • 网站模版可以套用吗58和百度哪个推广效果好
  • 怎么制作平台seo网站推广费用
  • 日本风格网站有了域名怎么建网站
  • 企业网站推广的模式天天seo站长工具
  • 域名问题网站不更新网页版
  • wordpress发布网站成人技术培训学校
  • wordpress中文开发电子书搜索引擎优化宝典
  • 商城版网站制作搜狗竞价推广效果怎么样
  • 做海报的网站什么编辑器沈阳企业网站seo公司
  • 技术支持 昆明网站建设百度安装应用
  • 做网站还有用吗百度推广四川成都地区服务中心
  • 通州建设局网站淘宝关键词
  • 动态网站开发wamp架构安徽seo网络推广
  • 做网站赚钱还是做app赚钱互联网营销推广服务商
  • 劵妈妈这种网站怎么做网站统计数据分析
  • 基金会网站建设方案网络营销平台有哪些?
  • 建立第一个网站seo网络优化是什么意思
  • 深圳效果图制作公司广州网站快速优化排名
  • 怎样制作时时彩网站做 裙 o连云港seo优化公司
  • 下做图软件在哪个网站下载网站seo运营培训机构