我在问自己浏览器是怎么工作的。例如,浏览器如何指示操作系统将鼠标指针从箭头改为手形(IDC_HAND)。在桌面应用程序中,我知道使用的是windows消息(对),但是它是如何在浏览器中发生的呢?在这种情况下,Spy++似乎没有捕捉到任何鼠标指针消息。你能帮我解释一下吗?
我正在尝试构建一个C#应用程序,它将检测鼠标指针的类型。
发布于 2009-11-23 16:41:55
浏览器视区是一个简单的窗口,几乎没有任何标准事件。页面是按像素呈现的,稍后将其视为位图。浏览器构建网页控件和显示元素的层次结构,并将其保存在内存中。每当鼠标在页面上移动时,浏览器算法都会搜索此层次结构,以确定这些特定坐标是否属于按钮或链接,然后将光标更改为指针。简而言之,这就是浏览器引擎的全部内容。将HTML解析为控件的层次结构,然后解析CSS并更新这些元素的属性,然后将考虑到其属性的控件呈现到视口中,然后处理用户输入,并在需要时发起请求。浏览器引擎还执行JavaScript代码并对文档结构执行操作。
还要记住,FireFox也存在于Linux上,在这种情况下,浏览器开发人员使用标准的windows事件是没有意义的。一些基本的初始化代码肯定是与平台相关的,但在准备好窗口并通过一些抽象层将用户输入转发到核心之后,浏览器引擎将主导整个过程,而不关心底层操作系统及其事件系统。
发布于 2009-11-23 16:43:50
可以为每个窗类定义特定的光标。请参阅function RegisterClassEx和structure WNDCLASSEX的文档
HTH。
https://stackoverflow.com/questions/1781806
复制相似问题