


Bases du SDK Win32 (8) Explication détaillée du mécanisme de message Windows (image)
1. Qu'est-ce qu'un message
Avant d'expliquer ce qu'est un message, discutons d'abord du mécanisme d'exécution du programme. De manière générale, les programmes peuvent être divisés en deux catégories selon leurs mécanismes d'exécution :
La première catégorie est le processus pilote . Par exemple, le programme C que nous avons écrit lors de notre premier contact avec la programmation, ou le programme du microcontrôleur. Ce type de programme a souvent un processus d'exécution prédéfini, et lorsque nous l'exécutons, nous l'exécutons simplement étape par étape
Le deuxième type est événementiel ; Je pense que tout le monde peut comprendre cet incident. La survenance de chaque événement est aléatoire, et chaque événement aura son propre moment, semblable aux événements de la vie. Les événements du programme auront également leurs propres points de déclenchement. Le programme événementiel a écrit à l'avance le flux de traitement pour chaque événement. Dans le système d'exploitation Windows, les messages sont des événements dans Windows. Presque toutes les opérations sous Windows déclencheront un message. Comme nous l'avons dit précédemment, la création d'une fenêtre déclenchera un message WM_CREATE, et le dessin d'une fenêtre déclenchera un message WM_PAINT. Lorsque nous cliquons sur la souris ou le clavier, le message correspondant sera déclenché.
Les messages Windows sont encapsulés dans une structure appelée MSG, dont le prototype est le suivant :
typedef struct tagMSG { // msg HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG;
Hwnd - le handle de la fenêtre qui a déclenché le message.
Message - ID du message. Le système d'exploitation Windows attribue un ID de message à chaque message, et cet ID est unique. L'essence de WM_CREATE que nous avons mentionné ci-dessus est un entier, qui est l'ID du message.
wParam - Paramètres pouvant être attachés au message.
lParam - Paramètres pouvant être attachés au message.
Heure - l'heure à laquelle le message est apparu.
Pt - La position de la souris lorsque le message est apparu.
Les paramètres ci-dessus sont indispensables pour le message.
Sous Windows, les messages sont encapsulés dans des objets MSG. Lorsque envoie un message, ces objets sont placés dans la file d'attente ; Ces objets MSG sont également obtenus.
Boucle
Dans l'article précédent, nous avons écrit une fois une boucle de message. La boucle de messages consiste à lire en continu les messages dans la file d'attente des messages dans notre processus, puis à les traiter.void Message() { MSG nMsg = { 0 }; while (GetMessage(&nMsg, NULL, 0, 0)) { TranslateMessage(&nMsg); DispatchMessage(&nMsg); } }
fonction est le suivant : GetMessage (LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax)
lpMsg - utilisé pour stocker les messages Pointeur. de type MSG.
hWnd - spécifie le handle de la fenêtre à partir de laquelle le message est obtenu. Lorsque sa valeur est NULL, GetMessage récupère les messages de toute fenêtre appartenant au thread appelant.
wMsgFilterMin - Un entier spécifiant la valeur minimale du message à récupérer.
wMsgFilterMax - Un entier spécifiant la valeur maximale du message à récupérer.
Une fois que GetMessage() a obtenu le message, TranslateMessage traduira le message, convertissant principalement le message de clé virtuelle en un message de caractères. Le message de caractères est envoyé à la file d'attente des messages du thread appelant et est lu la prochaine fois que le thread appelle la fonction GetMessage ou PeekMessage. Chaque touche du clavier sous Windows correspond à une macro, et le message envoyé par cette touche du clavier est un message de touche virtuelle. La fonction de TranslateMessage est de convertir les messages de clé virtuelle en messages de caractères WM_CHAR, WM_SYSCHAR, etc.
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0);//可¨¦以°?使º1GetMessage返¤¦Ì回?0 break; default: break; } return DefWindowProc(hWnd, uMsg, wParam, lParam); }
hWnd就是产生消息的窗口句柄,uMsg是传递的消息,wParam和lParam分别是消息携带的两个参数。在上面的窗口处理函数中,我们定只处理了一个消息WM_DESTROY,这是我们在点击窗口的关闭按钮后产生的一个消息。我们说过,我们在创建窗口是,也会产生一个WM_CREATE消息。下面我们在窗口处理函数中处理这个消息:
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0);//可¨¦以°?使º1GetMessage返¤¦Ì回?0 break; case WM_CREATE: MessageBox(NULL,"WM_CREATE消息被处理了","消息处理",MB_OK); default: break; } return DefWindowProc(hWnd, uMsg, wParam, lParam); }
我们在接受到WM_CREATE后,会弹出一个对话框。预期的效果是点击这个对话框的确定按钮后才会显示窗口。如下面所示:
运行程序,先弹出对话框:
点击确定按钮后,弹出窗口:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les applications natives de Windows 11 (comme l'Explorateur de fichiers) et d'autres applications shell utilisent par défaut des coins arrondis et des éléments Fluent Design (comme Acrylique). En plus des coins arrondis, une autre caractéristique de conception importante de Windows 11 concerne les matériaux comme le mica, qui aligne la couleur d'arrière-plan des applications avec celle du bureau. Le mica est similaire à l'acrylique mais fonctionne légèrement différemment. Comme Microsoft le décrit, Windows Mica Materials crée « une hiérarchie de couleurs en alignant les arrière-plans avec les applications ».

Le nouveau SDK Windows 11 pour la build 22523 a révélé que Microsoft développe un nouvel effet de flou pour Windows 11. Cet effet est appelé Tabbed et s'ajoute à l'acrylique et au mica. Le nouveau DWMWA_SYSTEMBACKDROP_TYPE dans le SDK 22523, Mica, l'API Win32 publique d'Acrylic et leur étrange nouveau mélange « d'onglets » : pic.twitter.com/dbsu7ZFiIi — Tout est de retour (@StartIsBack) 15 décembre 2021 Disponible dans l'exemple d'application du SDK suivant

Le logiciel antivirus peut parfois afficher un avertissement indiquant Trojan/win11.casdet rfn sur les ordinateurs portables Windows 32. Cela indique que le PC est infecté par un cheval de Troie malveillant, provoquant un dysfonctionnement. Heureusement, il existe plusieurs moyens de résoudre ce problème, comme expliqué ci-dessous. De plus, vous pourriez être intéressé par notre guide détaillé pour savoir si cdn.districtm.io est un pop-up/virus/malware ou non. Qu’est-ce que le Trojan/win32.casdet rfn ? Trojan/win32.casdet rfn est une infection grave par un virus cheval de Troie qui peut envahir le système et tuer ses processus, ce qui facilite

La différence entre win32 et win64 est la suivante : 1. win32 fait référence à l'environnement 32 bits du système d'exploitation Microsoft Windows et win64 fait référence à la version 64 bits du système d'exploitation Microsoft Windows, qui est plus stable et plus rapide que le 32. -version bits ; 2. win32 prend en charge jusqu'à 2 Go de mémoire. Win64 doit avoir plus de 4 Go de mémoire ; 3. win64 prend en charge les processeurs 64 bits, mais win32 ne peut pas le prendre entièrement en charge ; 4. win32 recherche la simplicité, tandis que win64 recherche la performance.

En août 2021, Microsoft avait promis que OneNote sur Windows 10 et Windows 11 recevrait une série de mises à jour majeures de fonctionnalités dans les mois à venir, alors que le géant de la technologie unifie plusieurs versions de l'application de prise de notes en une seule partie de ses efforts. de clients. OneNote a subi de nombreux changements au cours des dernières années. En 2018, lorsque Microsoft souhaitait vraiment que les gens utilisent sa version UWP de OneNote, la société a cessé de regrouper la version originale et riche en fonctionnalités de OneNote avec les applications Office préinstallées. Au lieu de cela, Microsoft a uniquement fourni un client UWP et ajouté de nouvelles fonctionnalités pour les versions modernes. Microsoft a changé plus tard

Maîtriser les compétences essentielles pour le développement secondaire du SDK Java Hikvision Introduction : Avec le développement rapide des technologies de l'information, les systèmes de vidéosurveillance ont été largement utilisés dans divers domaines. En tant que principal fournisseur national de solutions de vidéosurveillance, les produits et technologies de Hikvision ont toujours occupé une position importante sur le marché. Afin de répondre aux besoins des différents projets, Hikvision fournit un SDK permettant aux développeurs d'effectuer un développement secondaire. Cet article présentera quelques compétences essentielles pour maîtriser le développement secondaire du SDK Java Hikvision et joindra des exemples de code correspondants. 1. Comprendre Hikvision

Le WindowsAppSDK est un ensemble d'outils et d'API que les développeurs peuvent utiliser dans leurs applications Windows pour fournir des fonctionnalités « cohérentes » sur une variété d'appareils utilisant Windows 10 (version 1809 et ultérieure) et Windows 11. Il est très important de comprendre qu'il ne remplace pas les types d'applications existants tels que .NET ou le SDK Windows, il fournit simplement un ensemble d'outils API unifié qui peut être utilisé pour compléter vos applications existantes. Aujourd'hui, Microsoft a publié la version 1.2 du SDK Windows App avec de nombreuses nouvelles fonctionnalités. Le point culminant de cette version pourrait être les développeurs tiers

Le nom complet du SDK est « Software Development Kit », qui signifie « kit de développement logiciel » en chinois. Il s'agit d'un ensemble d'outils fournis par le fabricant de la plate-forme matérielle, du système d'exploitation (OS) ou du langage de programmation. Les SDK aident les développeurs de logiciels à créer des applications pour des plates-formes, des systèmes ou des langages de programmation spécifiques. Un SDK de base se compose généralement d'un compilateur, d'un débogueur et d'une interface de programmation d'application (API), mais peut également inclure d'autres contenus, tels que : de la documentation, des bibliothèques, un environnement d'exécution/développement, des outils de test/analyse, des protocoles réseau, etc.
