花点时间了解消息,句柄和窗口

消息、句柄和窗口

一,为什么我要花时间研究这些东西

  对于我个人来说我不想做码农,不想只知道拖控件,使用控件有的时候要了解一下底层,不知道你们有没有想过这样的一个问题,我们在C#中使用的的event事件是怎么触发这个事件呢?事件无非就是对委托的封装,在类内不管用public还是protected进行修饰,再类外都是private,只能在类外+=或者-=对事件进行注册或者注销。这能说明什么呢?这只能说明你已经将事件进行了绑定,说白了就是将方法的地址使用一种参数的形式进行了传递,从一个类传递到另一个类中,然后对这个方法进行实现。如果我们建一个Windows应用程序的时候,我们在重绘窗口是会复写函数Onpaint(),复写之后这个方法又是怎样进行控制的呢?

二、原因何在?

  Windows应用程序是事件驱动的,也就是说,Windows应用程序将等待系统传递输入,然后,应用程序的对输入作出响应,将控件返回到系统上。系统和应用程序通过“Windows消息”通信。无论何时用户移动鼠标或者单击键盘时,系统就将消息发送到应用程序。应用程序有一个特殊的函数(称为“窗口过程”)处理所接受的信息,以使对用户的输入作出响应。这个函数传统上称WndProc(),一般不必这样称呼它。可是,用户交互作用并不只是创建应用程序要处理的消息,另一个示例是电源管理。恰好系统进入休眠模式之前,将消息发送到所有开放应用程序。如果应用程序并不准备进入休眠模式,他可以将消息发送回系统,说“此时不要进入睡眠模式”

  消息路由有两种类型。一种是将消息发送到称为消息队列的“先进先出”队列中。对于所创建的每个用户界面线程来说,有一个系统消息队列和一个特定线程队列。当用户移动鼠标是,相关信息放到系统消息队列中。系统检查该消息,以确定建议那个窗体处理该消息,然后将消息发送到窗口的WndProc()函数进行处理。鼠标和键盘消息就是排队消息的示例。路由消息的其他方式,系统将消息直接发送到窗口过程中。通常情况下会发送不排队消息通知直接影响窗口的事件。诸如重新设置大小以及窗口激活类的消息,将一部排队消息的形式发送。

  每个应用程序可能由几个窗体或者窗口组成。每个窗口都有一个窗口过程,来处理发送给它的消息。窗口过程将检查每条消息,确定对消息进行哪些处理工作。将消息发送到窗口过程的进程,称作“消息泵”。消息泵位于WinMain()函数中,二WinMain()是应用程序的入口点(类似于C#中的Main()方法)。消息有两种类型:系统定义的消息和应用程序定义的消息。系统定义的消息是系统预定义的消息。应用程序定义的消息当然由应用程序定义。为了标示消息,有四个参数与他一起发送

  1.窗口句柄

  2.消息标识符

  3.两个消息参数值,通常称作lParam和wParam

  窗口句柄是一个long型的值,用于操作系统标示特殊的窗口。所创建的每个窗口都有一个句柄与它相关联,这种句柄有时称作hWnd。hWnd是在创建该窗口时由系统产生的,只要该窗口不被销毁,它就保持为常量该消息所发送的句柄,是该消息窗口的句柄。

  消息标识符是一个标识消息内同的指定变量。所处理的常见消息是WM_PAINT消息。这是一个系统定义的消息,告诉该窗口它要重新绘制其自身。系统定义的消息分为30个不同的类别。每个类别都是由该消息的两个或者三个字符前缀定义的。就WM_PAINT消息而言,WM表示普通的窗口消息。其他类别包括用于编辑控件的EM、用于常用对话框的CDM,一集用于选项卡空间的TCM。每个消息标识符都是有一个在Windows SDK 中定义的相应符号标识符。

  lParam和wParam这两个消息参数几乎可以包含任何事物。他们可以包括位标志、整型值、对象引用、结构引用、对于回调函数的引用等。如果消息不使用参数,一般就将其设置为null。

 

 

转载于:https://www.cnblogs.com/dwlsxj/archive/2013/03/22/Winform.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ux设计中的各种地图_如何在UX设计中使用颜色

ux设计中的各种地图Color is the mother tongue of the subconscious.颜色是潜意识的母语。 — Carl Jung—荣格 Color has more to say than meets the eye. As a building block of visual language, color highlights, guides attention, and unifies elements. In UX, co…

《Two Dozen Short Lessons in Haskell》学习(十八) - 交互式键盘输入和屏幕输出

《Two Dozen Short Lessons in Haskell》(Copyright © 1995, 1996, 1997 by Rex Page,有人翻译为Haskell二十四学时教程,该书如果不用于赢利,可以任意发布,但需要保留他们的copyright)这本书是学习 Ha…

figma设计_Figma中简单,可重复使用的设计系统

figma设计Putting together a design system may seem like an unnecessary hassle. It’s often easier to jump straight into designing things without having to worry about styles, components, or libraries. Some might even argue that when it comes to smaller pro…

WPF 关于鼠标事件和坐标

Mouse.GetPosition(window);可以在任何时间获得相对任意元素的鼠标位置 Mouse.Capture(el);可以让某个元素获得所有的鼠标事件不管他应不应该的到鼠标事件 Mouse.Capture(null);解除转载于:https://www.cnblogs.com/wangjixianyun/archive/2013/03/25/2980953.html

访问25%无法访问的人-如何设计可访问性

We’re increasingly dependent on the internet and computers for everything we do — this has become starkly more obvious through the COVID19 global pandemic.我们所做的一切都越来越依赖于互联网和计算机-通过COVID19全球大流行,这一点变得更加明显。 F…

DDD:实体如何处理外部依赖

场景 修改用户名时,要验证用户名的唯一性。 实现1 1 public class User 2 { 3   public void ChangeUsername(string newUsername) 4   { 5   //使用服务定位器获取IUsernameUniqueService ,执行验证。 6   } 7 } 实现…

架构师论坛 创业_我在早期创业时作为设计师学到的东西

架构师论坛 创业For over 2 years at a young product company, I collaborated with talented engineering folks for a 0 → 1 suite of products. Here are my learnings and key takeaways. Of course, these are my views and do not represent those of my employers or …

HFileOutputFormat与TotalOrderPartitioner

最近需要为一些数据增加随机读的功能,于是采用生成HFile再bulk load进HBase的方式。 运行的时候map很快完成,reduce在sort阶段花费时间很长,reducer用的是KeyValueSortReducer而且只有一个,这就形成了单reducer全排序的瓶颈。于是…

qt按钮禁用和激活禁用_为什么试探法只是经验法则:禁用按钮的情况

qt按钮禁用和激活禁用Most user experience designers will be familiar with Jackob Nielsen’s 10 usability heuristics. They are widely cited and a great set of broad rules of thumb to follow when designing user interfaces.大多数用户体验设计师将熟悉Jackob Niel…

Teach Yourself Java 2 in 21 Days 书中样例代码实践

找了好几书JAVA的书,看了几章,都看不下去。 我觉得适合《Teach Yourself Java 2 in 21 Days》(Rogers Cadenhead Laura Lemay)还是适合我的。 孙卫琴那本,我感觉就罗嗦多了没到我点子上。 接口,抽象类这些内…

好奇心机制_好奇心问题

好奇心机制For my past two jobs I’ve posted a question every week in my team chat and learned so much about my co-workers. Give it a try! :D对于过去的两个工作,我每周都会在团队聊天中发布一个问题,并且对我的同事了解很多。 试试看&#xff…

20130328java基础学习笔记-循环结构for以及for,while循环区别

1.循环结构:for讲解class ForDemo{ public static void main(String[] args) { /* for(初始化表达式;循环条件表达式;循环后的操作表达式) { 执行语句;(循环体) } */ for(int x 1; x<3; x) { …

小程序设计避免犯什么错_新设计师犯下的5种印刷错误以及如何避免

小程序设计避免犯什么错Over the last year and a half, I’ve had the opportunity to teach the basics of typography to undergraduate graphic design students. During this time, I’ve noticed some common mistakes that my students make when first learning how to…

移动设备web文字单位_移动设备如何塑造现代Web设计

移动设备web文字单位I was working with a nonprofit earlier this month on redesigning their website and during the first meeting, I proposed a very standard idea: the home page needed to tell a story and guide the intended user through the intended process (…

hp-ux修改时区方法_UX研究人员可以倡导人类的6种方法

hp-ux修改时区方法In the UX world, we often hear terms like “user-centered,” “human-centered,” and “customer-centered.” We believe that in order to be innovative, we need to center experiences that are authentic, intuitive, and practical.在UX世界中&am…

2013年3月百度之星A题

伪随机数生成器 题目描述 baidu熊最近在学习随机算法&#xff0c;于是他决定自己做一个随机数生成器。 这个随机数生成器通过三个参数c, q, n作为种子, 然后它就可以通过以下方式生成伪随机数序列&#xff1a; m0 c, mi1 (q2mi 1) mod 2n, for all i > 0. 因为一些奇怪的…

为什么张扬的人别人很讨厌_为什么每个人总是讨厌重新设计,即使他们很好

为什么张扬的人别人很讨厌重点 (Top highlight)微处理 (Microprocessing) In Microprocessing, columnist Angela Lashbrook aims to improve your relationship with technology every week. Microprocessing goes deep on the little things that define your online life to…

转载--C语言:浮点数在内存中的表示

单精度浮点数&#xff1a; 1位符号位 8位阶码位 23位尾数 双精度浮点数&#xff1a; 1位符号位 8位阶码位 52位尾数 实数在内存中以规范化的浮点数存放&#xff0c;包括数符、阶码、尾数。数的精度取决于尾数的位数。比如32位机上float型为23位 double型为52位。…

学习ui设计_如果您想学习UI设计,该怎么办

学习ui设计There is a question that is always asked when we want to learn something new.当我们想学习新东西时&#xff0c;总会问一个问题。 Where to start?从哪儿开始&#xff1f; This is also being my question when I want to learn UI design. In this article, …

Christmas

html5 game - Christmasloading......转载于:https://www.cnblogs.com/yorhom/archive/2013/04/05/3001116.html