Table des matières
1. Introduction" >1. Introduction
2. Classification des fenêtres " >2. Classification des fenêtres
2.1 Classe de fenêtre système" >2.1 Classe de fenêtre système
2.2 Classe de fenêtre globale " >2.2 Classe de fenêtre globale
" > 2.3 Classe de fenêtre locale
Maison Opération et maintenance exploitation et entretien des fenêtres Win32 SDK Basics (5) Une brève introduction à la classe window

Win32 SDK Basics (5) Une brève introduction à la classe window

Jun 06, 2017 am 09:42 AM

1. Introduction

Dans l'article précédent, nous avons créé une fenêtre à partir de zéro. Une étape très importante consiste à enregistrer la classe de fenêtre, comme le code suivant :

//注册窗口类
BOOL Register(LPSTR lpClassName, WNDPROC wndProc)
{
    WNDCLASSEX wce = { 0 };
    wce.cbSize = sizeof(wce);
    wce.cbClsExtra = 0;
    wce.cbWndExtra = 0;
    wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wce.hCursor = NULL;
    wce.hIcon = NULL;
    wce.hIconSm = NULL;
    wce.hInstance = g_hInstance;
    wce.lpfnWndProc = wndProc;
    wce.lpszClassName = lpClassName;
    wce.lpszMenuName = NULL;
    wce.style = CS_HREDRAW | CS_VREDRAW;
    ATOM nAtom = RegisterClassEx(&wce);
    if (nAtom == 0)
        return FALSE;
    return true;
}
Copier après la connexion

Toute fenêtre sous Windows doit être dans le système avant d'être créée. Elle a été clairement enregistré. Lorsque nous utilisons CreateWindowEx pour créer une fenêtre, le nom du deuxième paramètre est le nom de la classe de la fenêtre. Ce nom doit être unique dans la portée visible par notre code. Cet article aborde principalement les problématiques des classes de fenêtres sous Windows.

2. Classification des fenêtres

Tous les éléments visibles dans Windows appartiennent essentiellement à une fenêtre, quelle que soit sa forme. il est rond, carré ou même irrégulier. Toutes ces fenêtres appartiennent à une certaine classe de fenêtre. De manière générale, les classes de fenêtres Windows sont divisées en trois types :
(1) Classe de fenêtre système
(2) Classe de fenêtre globale
(3) Classe de fenêtre locale
Ci-dessous, je discuterai respectivement de la classification des classes de fenêtres dans Windows.

2.1 Classe de fenêtre système

Un bouton et une zone d'édition, que nous avons tous dans le système d'exploitation Windows Les contrôles visibles dans sont en fait une fenêtre. Lorsque nous installons le système d'exploitation, Windows enregistrera un grand nombre de classes de fenêtres au niveau du système dans le système d'exploitation. Lorsque nous développons, nous pouvons créer ces fenêtres directement en fonction des noms de classes de fenêtres. Pour expliquer ce problème, nous introduisons le code suivant en plus du code de l'article précédent.

HWND CreateMain(LPSTR lpClassName, LPSTR lpWndName)
{
	HWND hWnd = CreateWindowEx(0, lpClassName, lpWndName,
		WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, g_hInstance, NULL);
	return hWnd;
}
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
	_In_opt_ HINSTANCE hPrevInstance,
	_In_ LPWSTR    lpCmdLine,
	_In_ int       nCmdShow)
{
	// TODO: Place code here.

	g_hInstance = hInstance;
	
	HWND hWnd = CreateMain("Button", "window");
	Display(hWnd);
	Message();
	return 0;
}
Copier après la connexion

CreateMain est une fonction que nous avons définie pour créer une fenêtre. Il reçoit deux paramètres, le premier est le nom de la classe de fenêtre enregistrée et le second est le titre de la fenêtre. Contrairement au code de l'article précédent, nous avons omis l'étape d'enregistrement d'une fenêtre personnalisée. Au lieu de cela, dans la fonction WinMain, CreateMain est appelée pour créer une fenêtre avec le nom de classe de fenêtre « Button ». Je pense que tu sais déjà ce que nous allons faire, n'est-ce pas ? Oui, il s'agit de générer un bouton Button. Tous les contrôles que nous utilisons couramment ont été enregistrés en tant que classes de fenêtres système par le système d'exploitation et nous pouvons les utiliser directement. Veuillez consulter les résultats du programme suivant :



Vous pouvez également essayer de créer une modification boîte de dialogue telle que , listes déroulantes et autres fenêtres au niveau du système.

2.2 Classe de fenêtre globale

La classe de fenêtre globale fait référence à la classe de fenêtre qui peut être utilisée dans la portée globale du candidature après inscription. Par exemple, nous pouvons enregistrer la classe globale de fenêtre dans la DLL, puis tous les programmes qui introduisent la DLL peuvent utiliser cette classe. Lors de l'enregistrement d'une classe de fenêtre utilisée globalement, il nous suffit d'ajouter l'attribut CS_GLOBALCLASS au membre de style de lastructure de wec lors de l'enregistrement, comme suit :

	wce.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
Copier après la connexion

Afin de vérifier ce problème, nous ajoutons un nouveau projet dll, puis définissons une fonction d'enregistrement de fenêtre RegisterWindow() comme suit :

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_DESTROY:
		PostQuitMessage(0);//可以使GetMessage返回0
		break;
	default:
		break;
	}
	return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

 BOOL RegisterWindow()
{
	WNDCLASSEX wce = { 0 };
	wce.cbSize = sizeof(wce);
	wce.cbClsExtra = 0;
	wce.cbWndExtra = 0;
	wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
	wce.hCursor = NULL;
	wce.hIcon = NULL;
	wce.hIconSm = NULL;
	wce.hInstance = NULL;
	wce.lpfnWndProc = WndProc;
	wce.lpszClassName = "DllMain";
	wce.lpszMenuName = NULL;
	wce.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;
	ATOM nAtom = RegisterClassEx(&wce);
	if (nAtom == 0)
		return FALSE;
	return true;
}
Copier après la connexion

Le nom de la classe de fenêtre enregistrée dans RegisterWindow() est "DllMain", que nous appelons dans la fonction principale de dll La fonction d'enregistrement termine l'enregistrement :

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	....
	RegisterWindow();
	return TRUE;
}
}
Copier après la connexion

Utilisez cette classe de fenêtre pour créer une fenêtre dans notre programme principal :

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
	_In_opt_ HINSTANCE hPrevInstance,
	_In_ LPWSTR    lpCmdLine,
	_In_ int       nCmdShow)
{
	...
	HWND hWnd = CreateMain("DllMain", "我是一个Dll注册的窗口");
	Display(hWnd);
	Message();
	return 0;
}
Copier après la connexion

Exécutez le programme et vous constaterez que nous avons produit avec succès cette fenêtre :



<<>

2.3 Classe de fenêtre locale

Définition de la classe de fenêtre locale, toutes les cs_globalClass qui n'est pas ajouté au style de WCE, et et et, et,, à,,, pour définir, Les classes de fenêtre enregistrées sont toutes des classes de fenêtre partielles.

wce.style = CS_HREDRAW | CS_VREDRAW;//未添加CS_GLOBALCLASS
Copier après la connexion

       我们在上一文中注册的窗口就是一个局部的窗口类,它的特点就是只能在注册的作用域内使用,由于它和全局窗口类只在注册的style和作用域上有分别,这里就不再详述,如要了解,请参照上一文。

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Windows 11 22H2 apporte un design mica/acrylique à davantage d'applications de bureau Win32 Windows 11 22H2 apporte un design mica/acrylique à davantage d'applications de bureau Win32 Apr 14, 2023 pm 04:58 PM

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 ».

Microsoft développe de nouveaux effets de flou pour Windows 11 Microsoft développe de nouveaux effets de flou pour Windows 11 May 13, 2023 am 09:04 AM

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

Cheval de Troie/win32.casdet Rfn dans Windows 11 Cheval de Troie/win32.casdet Rfn dans Windows 11 Apr 14, 2023 pm 02:49 PM

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

Quelle est la différence entre win32 et win64 Quelle est la différence entre win32 et win64 May 29, 2023 pm 05:22 PM

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.

Microsoft commence à tester la nouvelle conception OneNote pour Windows 11 Microsoft commence à tester la nouvelle conception OneNote pour Windows 11 Apr 19, 2023 pm 08:01 PM

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 au développement secondaire du SDK Java Hikvision Maîtriser les compétences essentielles au développement secondaire du SDK Java Hikvision Sep 06, 2023 am 08:10 AM

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

Windows App SDK 1.2 est maintenant en ligne, voici les nouveautés Windows App SDK 1.2 est maintenant en ligne, voici les nouveautés May 12, 2023 pm 06:07 PM

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

qu'est-ce que le SDK qu'est-ce que le SDK Jan 06, 2023 pm 03:26 PM

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.

See all articles