2009-11-23 20 views
0

Je me demandais comment fonctionnaient les navigateurs. Comment le navigateur dit-il à l'OS de changer le pointeur de la souris de la flèche à la main (IDC_HAND) par exemple. Dans l'application de bureau, je sais que sont utilisés les messages Windows (à droite), mais comment cela se passe dans les navigateurs? Spy ++ ne semble capturer aucun des messages du pointeur de la souris dans ce cas. Pouvez-vous m'aider avec une explication?Navigateurs et Windows Messaging

J'essaye de construire une application C# qui détectera le type du pointeur de la souris.

Répondre

1

La fenêtre d'affichage du navigateur est une fenêtre simple avec pratiquement aucun événement standard. Une page est rendue par pixel et traitée plus tard comme un bitmap. Un navigateur construit une hiérarchie de contrôles de pages Web et d'éléments d'affichage et les conserve en mémoire. Chaque fois que la souris se déplace sur la page, les algorithmes du navigateur recherchent dans cette hiérarchie si ces coordonnées particulières appartiennent, par exemple, à un bouton ou à un lien, puis modifient le curseur en pointeur. En bref, c'est tout ce que fait un moteur de navigateur. Parse HTML à une hiérarchie de contrôles, puis analyser CSS et mettre à jour les propriétés de ces éléments, puis rendre les contrôles en considération de leurs propriétés à une fenêtre, puis traiter l'entrée de l'utilisateur et, si nécessaire initier une demande. Le moteur de navigation exécute également du code JavaScript et effectue des manipulations sur la structure du document. Rappelez-vous également que FireFox existe pour Linux et dans ce cas, cela n'aurait aucun sens pour les développeurs de navigateurs de travailler avec des événements Windows standard. Un code d'initialisation de base est définitivement dépendant de la plate-forme, mais après la préparation de la fenêtre et l'envoi de l'utilisateur via une couche d'abstraction, le moteur du navigateur mène le jeu sans se soucier du système d'exploitation sous-jacent.

1

Vous pouvez définir un curseur spécifique pour chaque classe de fenêtre. Consulter la documentation pour la fonction RegisterClassEx et la structure WNDCLASSEX

HTH.