Cours de base sur la programmation VB
Qu'est-ce que le navigateur de texte APIAPI
Type de données de déclaration de fonction API et "type de sécurité"
structure constante
Résumer certains ensembles de fonctions API : fonctions de contrôle et de message, fonctions matérielles et système, fonctions de menu, fonctions de dessin
Qu'est-ce que l'API
Tout d’abord, il faut dire à tout le monde ce qu’est une API. La soi-disant API a été initialement écrite pour les programmeurs C et C++. Pour faire simple, les API sont une sorte de fonction. Elles sont incluses dans un fichier de bibliothèque de liens dynamiques supplémentaire appelé DLL. Selon la définition standard, l'API est l'interface de programmation d'applications 32 bits de Windows. Il s'agit d'une série de fonctions, de messages et de structures très complexes. Elle permet aux programmeurs d'utiliser différents types de langages de programmation pour compiler des programmes qui s'exécutent. sur les applications Windows 95 et Windows NT sur le système. On peut dire que si vous avez déjà étudié le VC, l'API n'est pas un problème pour vous. Mais si vous n'avez pas appris VC ou si vous n'êtes pas familier avec la structure de Windows95, alors on peut dire que l'apprentissage de l'API sera une chose très difficile.
Si vous ouvrez le dossier SYSTEM de WINDOWS, vous constaterez qu'il existe de nombreux fichiers supplémentaires nommés DLL. Une DLL ne contient pas une seule fonction API, mais des dizaines, voire des centaines. Pouvons-nous tous le maîtriser ? La réponse est non : il est impossible de le maîtriser. Mais en fait, nous n’avons vraiment pas besoin de tous les maîtriser. Nous devons simplement nous concentrer sur la maîtrise des fonctions API fournies avec le système Windos lui-même. Cependant, les fonctions qui dupliquent les propres fonctions de VB doivent également être supprimées. Par exemple, VB
La commande etAttr peut obtenir des attributs de fichier et SetAttr peut définir des attributs de fichier. Il existe également des fonctions correspondantes pour l'API
GetFileAttributes et SetFileAttributes ont des performances similaires. Après un tel calcul, il n’en reste plus que 500 ou 600. Oui, un bon nombre. Cependant, je peux oser vous dire que tant que vous en maîtriserez 100 familièrement, votre niveau de programmation sera au moins deux fois plus élevé qu'il ne l'est actuellement. Bien que les gens disent que VB et WINDOWS ont une relation étroite, je pense que l'API est plus proche
FENÊTRES. Si vous apprenez l'API, le premier gain est votre compréhension de l'architecture WINDOWS. Ce gain n'est pas facile.
Que se passerait-il si vous ne vous appuyiez pas sur les API ? Je peux vous dire que la plupart d'entre eux sont des livres de programmation avancés (bien sûr, ce n'est pas parce que le titre du livre est "avancé" mais "avancé" dans la section "Contenu de ce livre" au début). Les livres sont destinés à des lecteurs ayant une certaine base VB), et les premières questions commencent généralement par l'API. Par conséquent, on peut dire que si vous n’apprenez pas l’API, vous resterez probablement au niveau junior et ne pourrez pas gravir les échelons. Le seul moyen est peut-être de demander de l'aide aux autres : je suis en train de mourir, viens me sauver, que dois-je faire avec ceci, que dois-je faire avec cela. Êtes-vous ennuyé ? Bien sûr, il y a trop de bonnes personnes en ligne maintenant ? (y compris moi, hehe), mais vous devez comprendre que grâce à cette méthode, vous ne pourrez pas produire de bonnes œuvres entre vos mains. En effet, sans cette connaissance, vous ne pouvez pas formuler un concept de conception global dans votre esprit.
Navigateur de texte API[retour]
De nombreuses fonctions API sont très longues. Vous voulez voir à quoi cela ressemble ? Voici la fonction APIDdeClientTransaction à titre d'exemple :
DeclareFunctionDdeClientTransactionLib"user32"(pDataAsByte,ByValcbDataAsLong,ByValhConvAsLong,ByValhszItemAsLong,ByValwFmtAsLong,ByValwTypeAsLong,ByValdwTimeoutAsLong,pdwResultAsLong)AsLong
Ouah! Si longtemps ? Si vous n’avez jamais été exposé à l’API, je pense que vous devez être intimidé. Vous vous demandez peut-être si vous devriez continuer à apprendre. Mais ne vous inquiétez pas, heureusement les concepteurs de Microsoft nous fournissent des outils utiles, c'est l'API
Visionneuse de texte.
Grâce à la visionneuse de texte API, nous pouvons facilement trouver les déclarations de fonction, les types de structure et les constantes requis par le programme, puis les copier dans le presse-papiers et enfin les coller dans le segment de code du programme VB. Dans la plupart des cas, tant que nous déterminons les trois aspects des fonctions, structures et constantes requis par le programme, nous pouvons les ajouter au segment du programme via les opérations ci-dessus sur le navigateur de texte API, afin qu'ils puissent être utilisés dans le programme. . fonction. Ce sont les questions de bon sens les plus élémentaires pour l'apprentissage de l'API, et elles sont bien inférieures à l'énorme contenu système de l'API. Où gaspillerons-nous notre énergie à l’avenir (ce n’est en aucun cas un gaspillage) ?
Quand utiliser quelle fonction, quand utiliser quel type de structure, quand utiliser quelle constante.
Déclaration de fonction API
Pensons-y. En VB, comment déclarer une fonction ? Je pense que si vous lisez cet article, alors vous pouvez certainement répondre à cette question. Voici une déclaration de fonction qui devrait vous être familière :
FunctionSetFocus (ByValhwndAsLong)AsLong
Autrement dit, cette ligne de code définit une fonction nommée SetFocus. Cette fonction a un paramètre de type de données Long et est transmise par valeur (ByVal). Une fois la fonction exécutée, une donnée Long sera renvoyée.
La déclaration des fonctions API est également très similaire. Par exemple, la fonction SetFocus dans l'API s'écrit comme ceci :
DeclareFunctionSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
C'est un peu plus compliqué. Oui, c'est un peu plus compliqué. Mais je peux vous dire qu’à l’exception de ces parties supplémentaires, les autres parties sont toujours les mêmes que ce que vous avez appris auparavant. Il en va de même pour les appels de fonctions dans les programmes. comme:
DimdlAsLong
dl&=SetFoucs(Form1.Hwnd)
Mais une chose est claire. Ce n'est pas comme un programme que vous écrivez vous-même et dont vous pouvez voir le mécanisme de fonctionnement, ni comme VB
Comme pour les fonctions intégrées, vous pouvez découvrir leur utilisation dans l'aide en ligne de VB. Le seul moyen est d'apprendre et de rechercher des informations autres que VB.
L'instruction Declare est utilisée pour déclarer une référence à une procédure externe dans une bibliothèque de liens dynamiques (DLL) au niveau du module. Pour cela, il vous suffit de rappeler que toute déclaration de fonction API doit écrire cette instruction.
Iib indique la bibliothèque de liens dynamiques ou la ressource de code qui contient la procédure ou la fonction déclarée. En d’autres termes, cela explique la question de savoir d’où vient la fonction ou le processus.
Comme dans l'exemple ci-dessus, SetFocusLib "user32" indique que la fonction SetFocus provient du fichier user32.dll. Les principaux fichiers de bibliothèque de liens dynamiques DLL sont :
user32.dllGestion de Windows. Générez et gérez l'interface utilisateur de l'application.
Interface du périphérique graphique GDI32.dll. Produire une sortie graphique pour les appareils Windows
Service système Kernel32.dll. Accédez aux ressources informatiques du système d'exploitation.
A noter que lorsque le fichier DLL n'est pas dans le dossier Windows ou Système, sa source doit être précisée dans la fonction (
chemin). Par exemple, SetFocusLib "c:/Mydll/user32"
Les alias dans les déclarations de fonction sont facultatifs. Indique que la procédure à appeler a un autre nom (alias) dans la bibliothèque de liens dynamiques (DLL). Par exemple, l'alias "SetFocus" indique que l'autre nom de la fonction SetFocus dans User32.dll est,
Définir la mise au point. Pourquoi les deux noms sont-ils identiques ? Bien sûr, ils peuvent aussi être différents. Dans de nombreux cas, le nom de fonction décrit par Alias, c'est-à-dire que le dernier caractère de l'alias est souvent le caractère A. Par exemple, un autre nom de la fonction SetWindowsText est
SetWindowsTextA, exprimé sous la forme d'alias "SetWindowsTextA". Ce A n'est qu'une convention de dénomination utilisée par les concepteurs, indiquant que la fonction appartient à la version ANSI.
Alors, à quoi servent exactement les alias ? En théorie, les alias fournissent des méthodes fonctionnelles pour appeler des API avec un autre nom. Si vous spécifiez un alias, même si nous appelons la fonction en fonction de la fonction après l'instruction Declare, l'alias est le premier choix pour l'appel réel de la fonction. Par exemple, les deux déclarations de fonction suivantes (Fonction, ABCD) sont valides et appellent la même fonction SetFocus :
DeclareFunctionSetFocusLib"user32""SetFocus"(ByValhwndAsLong)AsLong
DéclarerABCDSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
Il convient de noter que lors du choix d'Alias, vous devez faire attention à la casse de l'alias ; si vous ne choisissez pas Alias, le nom de la fonction doit faire attention à la casse et ne peut pas être modifié. Bien sûr, dans de nombreux cas, puisque la déclaration de fonction provient directement de l'API
Il est copié à partir du navigateur de texte, le risque que cette erreur se produise est donc très faible, mais il est nécessaire que vous le sachiez.
Un dernier rappel, les déclarations API (incluant les structures et les constantes) doivent être placées dans la section "GeneralDeclarations" du formulaire ou du module.
Types de données et « sécurité des types »
Les types de données utilisés dans les fonctions API sont fondamentalement les mêmes que ceux de VB. Mais en tant que fonction API de WIN32, Integer n'existe pas
Type de données. Un autre point est que le type de données booléen n'est pas visible dans les fonctions API. Le type de données Variant apparaît sous la forme Any dans les fonctions API, telles que DataAsAny. Bien que cela implique que tout type de paramètre peut être transmis en tant que paramètre de cette fonction API, cela présente certains inconvénients. La raison en est que cela désactivera toute vérification de type des paramètres cibles. Cela crée naturellement des opportunités d'erreurs dans divers types d'appels de paramètres.
Afin d'appliquer une vérification de type stricte et d'éviter les problèmes mentionnés ci-dessus, une solution consiste à utiliser la technologie Alias mentionnée ci-dessus dans la fonction. Par exemple, une autre méthode de déclaration peut être utilisée pour la fonction API GetDIBits. Comme suit:
Prototype de la fonction GetDIBits :
PublicDeclareFunctionGetDIBitsLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,lpBitsAsAny,lpBIAsBITMAPINFO,ByValwUsageAsLong)AsLong
Modification de la fonction GetDIBits :
PublicDeclareFunctionGetDIBitsLongLib"gdi32"Alias"GetDIBits"(ByValaHDCAsLong,ByValhBitmapAsLong,ByValnStartScanAsLong,ByValnNumScansAsLong,lpBitsAsLong,lpBIAsBITMAPINFO,ByValwUsageAsLong)AsLong
Grâce aux connaissances acquises plus tôt dans ce cours, nous pouvons déjà savoir si la fonction prototype GetDIBits ou la fonction GetDIBitsLong modifiée appellera réellement la fonction GetDIBits d'origine spécifiée par Alias. Mais vous devriez voir que la différence entre les deux est que nous forçons le paramètre lpBits à être Long dans la fonction modifiée. Cela minimisera le risque d’erreurs dans les appels de fonction. Cette approche est appelée déclaration de « type sécurisé ».
Les types de données souvent observés dans les fonctions API sont : Long, String, Byte, Any.... (C'est tout.)
constante
Il n’y a rien de très spécial dans les constantes API. Veuillez regarder le code suivant en VB :
Msg=MsgBox("Bonjour",vbOKCancel)
On sait que la valeur de la constante vbOKCancel est égale à 1. Nous pouvons écrire le code ci-dessus comme ceci sans affecter la fonction du code :
Msg=MsgBox("Bonjour",1)
Mais vous ne voudrez peut-être pas choisir cette dernière option, car elle rendra difficile la compréhension du code. Cette approche est également adoptée par l'API. C'est juste que les constantes de l'API doivent être initialisées et déclarées avant l'événement, ce que VB lui-même ne peut pas comprendre. Son contenu provient toujours de l'API
Navigateur de texte. La forme spécifique est la suivante :
PublicConstABM_ACTIVATE=&H6
PublicConstRIGHT_CTRL_PRESSED=&H4
PublicConstRPC_E_SERVER_DIED=&H80010007
PrivateConstRPC_S_CALL_FAILED_DNE=1727&
Lors de l'initialisation des constantes, certains programmes utilisent Global, comme GlobalConstABM_ACTIVATE=&H6, mais je pense que Public peut le remplacer complètement. J'ai utilisé Global dans le passé, mais pas beaucoup maintenant. Si vous utilisez celui-ci maintenant et celui-là maintenant, vous ne pouvez pas maintenir la cohérence entre les programmes, ou du moins cela semble gênant.
structure[retour]
La structure est le langage du C et du C++. Généralement appelés types de données personnalisés en VB. Vraisemblablement, de nombreux amis le savent déjà. Dans le domaine API, je préfère appeler cela une structure, car les différents types de structure de l'API ne sont pas du tout définis par moi (
personnalisé).
En VB, la structure de l'API est également définie par l'instruction TYPE....ENDTYPE. Par exemple, dans l'API, la structure des points est définie comme suit :
PublicTypePOINTAPI
Valeur de coordonnée XAsLong' du point sur la coordonnée X (abscisse)
YAsLong'La valeur de coordonnée du point sur la coordonnée Y (ordonnée)
Type de fin
Pour un autre exemple, la définition de la structure rectangulaire (Rect) dans l'API est la suivante :
PublicTypeRECT
Coordonnée LeftAsLong'X du coin supérieur gauche du rectangle
Coordonnée Y TopAsLong' du coin supérieur gauche du rectangle
Coordonnée RightAsLong'X du coin inférieur droit du rectangle
Coordonnée Y BottomAsLong' du coin inférieur droit du rectangle
Type de fin
Ce contenu peut également être copié depuis le navigateur de texte API. Les noms de variables dans ces structures peuvent être modifiés à volonté sans affecter la structure elle-même. En d’autres termes, ces variables membres sont toutes virtuelles. Par exemple, la structure POINTAPI peut être modifiée comme suit :
PublicTypePOINTAPI
MyXAsLong'La valeur de coordonnée du point sur la coordonnée X (abscisse)
MyYAsLong'La valeur de coordonnée du point sur la coordonnée Y (ordonnée)
Type de fin
Toutefois, d’une manière générale, cela n’est pas nécessaire. La structure elle-même est un type de données. Par conséquent, lorsque vous l'utilisez, vous devez déclarer la variable spécifique comme étant du type structure avant de pouvoir réellement utiliser la structure dans le programme. La méthode de déclaration de la structure est la même que la méthode de déclaration des autres données. Par exemple, l'instruction suivante déclare la variable MyPoint comme type de structure POINTAPI :
MonPointAsPOINTAPI
Il est également très simple de référencer les variables membres dans la structure. Ajoutez simplement un "." après le nom de la structure, puis écrivez la variable membre à référencer. C'est un peu comme référencer une propriété d'un objet en VB. Par exemple, si l'on assigne la valeur de la variable X dans la structure MyPoint déclarée ci-dessus à la variable Temp&
Le code est le suivant :
Temp&=MonPoint.X
Cependant, il est important de noter qu'il ne faut pas penser que MyPoint dans l'exemple ci-dessus est une valeur. Ce n'est pas une valeur, mais une adresse (
aiguille). La valeur et l'adresse sont des concepts complètement différents. Les exigences de structure sont transmises par référence aux fonctions WINDOWS, c'est-à-dire à toutes les API
Dans les fonctions, les structures sont transmises par ByRef (ByRef est le type par défaut dans l'instruction Declare). Pour passer des structures, n'essayez pas d'utiliser ByVal, vous n'obtiendrez rien. Puisque le nom de la structure est en fait un pointeur vers la structure (la première adresse de la structure), vous pouvez simplement transférer le nom spécifique de la structure (voir le résumé, j'ai utilisé une police rouge pour mettre en évidence cette méthode de transfert).
Puisque la structure transfère un pointeur, la fonction lira et écrira directement la structure. Cette fonctionnalité est très adaptée au chargement des résultats de l’exécution de fonctions dans des structures.
Résumé[retour]
La procédure suivante est donnée pour résumer ce qui a été appris dans cette leçon. Démarrez VB, créez un nouveau projet, ajoutez un bouton de commande, copiez le code suivant dans le segment de code et exécutez-le.
PrivateDeclareFunctionGetCursorPosLib"user32"(lpPointAsPOINTAPI)AsLong
PrivateTypePOINTAPI'définit la structure des points
Valeur de coordonnée XAsLong' du point sur la coordonnée X (abscisse)
YAsLong'La valeur de coordonnée du point sur la coordonnée Y (ordonnée)
Type de fin
SubPrintCursorPos()
DimdlASLong
DimMyPointAsPOINTAPI
dl&=GetCursorPos(MyPoint)'Appelez la fonction pour obtenir les coordonnées de la souris à l'écran
Debug.Print"X="&Str(MyPoint.X)&"et"&"Y="&Str(MyPoint.Y)
EndSub
PrivateSubCommand1_Click()
ImprimerPosCurseur
EndSub
Le résultat de sortie est (chaque exécution peut obtenir des résultats différents, qui sont déterminés par la position du pointeur de la souris sur l'écran lorsque la fonction est appelée) :
X=240etY=151
Dans le programme, la fonction GetCursorPos permet d'obtenir la position du pointeur de la souris sur l'écran.
Dans l'exemple ci-dessus, vous pouvez constater que le contenu de la structure MyPpint passé en paramètres a subi des modifications substantielles après l'appel de la fonction. Cela est dû au fait que la structure est passée par ByRef.
Certains ensembles de fonctions API [retour]
API Windows
1. Commandes et fonctions de messages
AdjustWindowRect Étant donné un style de fenêtre, calculez la taille de fenêtre requise pour obtenir le rectangle de la zone client cible
AnyPopup détermine s'il y a des pop-ups sur l'écran
ArrangeIconicWindows organise les fenêtres enfants réduites d'une fenêtre parent
Fonction d'entrée du fil de connexion AttachThreadInput
BeginDeferWindowPos démarre le processus de création d'une série de nouvelles positions de fenêtre
BringWindowToTop amène la fenêtre spécifiée en haut de la liste des fenêtres
CascadeWindows organise les fenêtres en cascade
ChildWindowFromPoint renvoie le handle de la première fenêtre enfant de la fenêtre parent qui contient le point spécifié.
ClientToScreen détermine les coordonnées d'écran d'un point dans la fenêtre représentée par les coordonnées de la zone client
CloseWindow minimise la fenêtre spécifiée
Copie du contenu du rectangle CopyRect
DeferWindowPos Cette fonction spécifie une nouvelle position de fenêtre pour une fenêtre spécifique
DestroyWindow efface la fenêtre spécifiée et toutes ses fenêtres enfants
DrawAnimatedRects représente une série de rectangles dynamiques
EnableWindow autorise ou désactive toutes les entrées de souris et de clavier dans la fenêtre spécifiée.
EndDeferWindowPos met simultanément à jour les positions et l'état de toutes les fenêtres spécifiées lorsque DeferWindowPos est appelé.
EnumChildWindows énumère les fenêtres enfants pour la fenêtre parent spécifiée
EnumThreadWindows énumère les fenêtres liées à la tâche spécifiée
EnumWindows énumère toutes les fenêtres parentes dans la liste des fenêtres
EqualRect détermine si deux structures rectangulaires sont identiques
FindWindow recherche la première fenêtre de niveau supérieur dans la liste des fenêtres qui répond aux critères spécifiés
FindWindowEx recherche la première sous-fenêtre de la liste des fenêtres qui correspond aux conditions spécifiées
FlashWindow fait clignoter la fenêtre spécifiée
GetActiveWindow obtient le handle de la fenêtre active
GetCapture obtient le handle d'une fenêtre située sur le thread d'entrée actuel et qui capture la souris (l'activité de la souris est reçue par celle-ci)
GetClassInfo obtient une copie de la structure WNDCLASS (ou structure WNDCLASSEX), qui contient des informations relatives à la classe spécifiée.
GetClassLong obtient une entrée de variable Long de la classe window
GetClassName obtient le nom de classe pour la fenêtre spécifiée
GetClassWord obtient une variable entière pour la classe window
GetClientRect renvoie la taille du rectangle dans la zone client de la fenêtre spécifiée
GetDesktopWindow obtient un handle de fenêtre (fenêtre de bureau) représentant la totalité de l'écran
GetFocus obtient le handle de la fenêtre avec le focus d'entrée
GetForegroundWindow obtient le handle de la fenêtre avant
GetLastActivePopup Obtient le handle de la fenêtre pop-up la plus récemment activée dans une fenêtre parent donnée
GetLastError cible la fonction API précédemment appelée. Utilisez cette fonction pour obtenir des informations d'erreur étendues.
GetParent détermine la fenêtre parent de la fenêtre spécifiée
GetTopWindow recherche dans la liste des fenêtres internes le handle de la première fenêtre appartenant à la fenêtre spécifiée
GetUpdateRect obtient un rectangle qui décrit la partie de la fenêtre spécifiée qui doit être mise à jour
GetWindow obtient le handle d'une fenêtre qui a une relation spécifique avec une fenêtre source
GetWindowContextHelpId obtient l'ID de scène d'aide associé à la fenêtre
GetWindowLong obtient des informations à partir de la structure de la fenêtre spécifiée
GetWindowPlacement obtient les informations d'état et d'emplacement de la fenêtre spécifiée
GetWindowRect obtient le rectangle de plage de la fenêtre entière. La bordure, la barre de titre, la barre de défilement, le menu, etc. de la fenêtre se trouvent tous dans ce rectangle.
GetWindowText récupère le texte du titre d'un formulaire ou le contenu d'un contrôle
GetWindowTextLength étudie la longueur du texte du titre de la fenêtre ou du contenu du contrôle
GetWindowWord obtient des informations sur la structure de fenêtre spécifiée
InflateRect augmente ou diminue la taille d'un rectangle
La fonction IntersectRect charge un rectangle dans lpDestRect, qui est l'intersection de deux rectangles, lpSrc1Rect et lpSrc2Rect.
InvalidateRect bloque tout ou partie de la zone client d'une fenêtre
IsChild détermine si une fenêtre est une fenêtre enfant ou subordonnée d'une autre fenêtre
IsIconic détermine si la fenêtre a été réduite
IsRectEmpty détermine si un rectangle est vide
IsWindow détermine si un handle de fenêtre est valide
IsWindowEnabled détermine si la fenêtre est active
IsWindowUnicode détermine si une fenêtre est une fenêtre Unicode. Cela signifie que la fenêtre reçoit des littéraux Unicode pour tous les messages texte
IsWindowVisible détermine si la fenêtre est visible
IsZoomed détermine si la fenêtre est agrandie
LockWindowUpdate verrouille la fenêtre spécifiée et l'empêche de se mettre à jour
MapWindowPoints convertit les points dans les coordonnées de la zone client d'une fenêtre en système de coordonnées de la zone client d'une autre fenêtre
MoveWindow modifie la position et la taille de la fenêtre spécifiée
OffsetRect fait bouger le rectangle en appliquant un décalage spécifié
OpenIcon restaure un programme minimisé et l'active
PtInRect détermine si le point spécifié est à l'intérieur du rectangle
RedrawWindow redessine tout ou partie de la fenêtre
ReleaseCapture libère la capture de la souris pour l'application actuelle
ScreenToClient détermine les coordonnées de la zone client d'un point spécifié sur l'écran
ScrollWindow tout ou partie de la zone client de la fenêtre de défilement
ScrollWindowEx fait défiler tout ou partie de la zone client de la fenêtre, en fonction d'options supplémentaires.
SetActiveWindow active la fenêtre spécifiée
SetCapture définit la capture de la souris sur la fenêtre spécifiée
SetClassLong définit une entrée de variable Long pour la classe de fenêtre
SetClassWord définit une entrée pour la classe de fenêtre
SetFocusAPI définit le focus d'entrée sur la fenêtre spécifiée. Si nécessaire, la fenêtre est activée
SetForegroundWindow définit la fenêtre comme fenêtre avant du système
SetParent spécifie le nouveau parent d'une fenêtre
SetRect définit le contenu du rectangle spécifié
SetRectEmpty définit le rectangle sur un rectangle vide
SetWindowContextHelpId définit l'ID de la scène d'aide (contexte) pour la fenêtre spécifiée
SetWindowLong définit les informations pour la fenêtre spécifiée dans la structure de la fenêtre
SetWindowPlacement définit l'état de la fenêtre et les informations de position
SetWindowPos spécifie une nouvelle position et un nouvel état pour la fenêtre
SetWindowText définit le texte du titre de la fenêtre ou le contenu du contrôle
SetWindowWord définit les informations pour la fenêtre spécifiée dans la structure de la fenêtre
ShowOwnedPopups Affiche ou masque toutes les fenêtres pop-up appartenant à la fenêtre spécifiée
ShowWindow contrôle la visibilité d'une fenêtre
ShowWindowAsync est similaire à ShowWindow
SubtractRect charge le rectangle lprcDst, qui est le résultat de la soustraction de lprcSrc2 du rectangle lprcSrc1
TileWindows organise les fenêtres dans l'ordre des tuiles
UnionRect charge un rectangle cible lpDestRect, qui est le résultat de l'union de lpSrc1Rect et lpSrc2Rect
UpdateWindow force une mise à jour immédiate de la fenêtre
ValidateRect valide tout ou partie de la zone client de la fenêtre
WindowFromPoint renvoie le handle de la fenêtre qui contient le point spécifié. Ignorer les fenêtres masquées, cachées et transparentes
2. Fonctions matérielles et système
ActivateKeyboardLayout active une nouvelle disposition de clavier. La disposition du clavier définit l'emplacement et la signification des touches sur un clavier physique
Le bip est utilisé pour générer des sons simples
CharToOem convertit une chaîne du jeu de caractères ANSI en jeu de caractères OEM
ClipCursor limite le pointeur à la zone spécifiée
ConvertDefaultLocale convertit un identifiant local spécial en un véritable identifiant local
CreateCaret crée un curseur (curseur) basé sur les informations spécifiées et le sélectionne comme curseur par défaut pour la fenêtre spécifiée
DestroyCaret efface (détruit) un curseur
EnumCalendarInfo énumère les informations de calendrier disponibles dans l'environnement "local" spécifié
EnumDateFormats énumère les formats de date longs et courts disponibles dans le paramètre « local » spécifié
EnumSystemCodePages énumère les pages de codes installées ou prises en charge sur le système
EnumSystemLocales énumère les paramètres « locaux » que le système a installés ou prend en charge
EnumTimeFormats énumère les formats d'heure applicables à un emplacement spécifié
ExitWindowsEx quitte Windows et redémarre avec des options spécifiques
ExpandEnvironmentStrings développe la chaîne d'environnement
FreeEnvironmentStrings traduit le bloc de chaîne d'environnement spécifié
GetACP détermine la page de codes ANSI actuellement en vigueur
GetAsyncKeyState détermine l'état de la clé virtuelle spécifiée lorsque la fonction est appelée
GetCaretBlinkTime détermine la fréquence de clignotement du curseur caret
GetCaretPos détermine la position actuelle du curseur
GetClipCursor Obtient un rectangle décrivant la zone de découpage actuellement spécifiée pour le pointeur de la souris
GetCommandLine obtient un pointeur vers le tampon de ligne de commande actuel
GetComputerName obtient le nom de cet ordinateur
GetCPInfo obtient des informations relatives à la page de codes spécifiée
GetCurrencyFormat formate un nombre selon le format monétaire pour le paramètre « local » spécifié
GetCursor Obtient le handle du pointeur de la souris actuellement sélectionné
GetCursorPos obtient la position actuelle du pointeur de la souris
GetDateFormat formate une date système dans un format "local" spécifié
GetDoubleClickTime détermine l'intervalle de temps entre deux clics de souris consécutifs qui sera traité comme un événement de double-clic.
GetEnvironmentStrings alloue et renvoie un handle vers un bloc mémoire contenant les paramètres de chaîne d'environnement actuels.
GetEnvironmentVariable obtient la valeur d'une variable d'environnement
GetInputState détermine s'il y a des événements de souris ou de clavier en attente (en attente de traitement)
GetKBCodePage est remplacé par GetOEMCP, les deux fonctions sont exactement les mêmes
GetKeyboardLayout obtient un handle décrivant la disposition du clavier de l'application spécifiée
GetKeyboardLayoutList obtient une liste de toutes les dispositions de clavier applicables au système
GetKeyboardLayoutName obtient le nom de la disposition de clavier actuellement active
GetKeyboardState obtient l'état actuel de chaque touche virtuelle du clavier
GetKeyboardType obtient des informations sur le clavier utilisé
GetKeyNameText détermine le nom de la clé en fonction du code d'analyse.
GetKeyState détermine l'état de la clé virtuelle spécifiée pour les clés qui ont été traitées lors de la dernière saisie des informations.
GetLastError cible la fonction API précédemment appelée. Utilisez cette fonction pour obtenir des informations d'erreur étendues.
GetLocaleInfo obtient des informations relatives au "lieu" spécifié
GetLocalTime obtient la date et l'heure locales
GetNumberFormat formate un nombre dans un format spécifique pour le "lieu" spécifié
GetOEMCP détermine la page de codes Windows à convertir entre les jeux de caractères OEM et ANSI
GetQueueStatus détermine le type de message en attente (en attente de traitement) dans la file d'attente des messages de l'application
GetSysColor détermine la couleur de l'objet d'affichage Windows spécifié
GetSystemDefaultLangID obtient l'ID de langue par défaut du système
GetSystemDefaultLCID obtient le "place" actuel du système par défaut
GetSystemInfo obtient des informations relatives à la plate-forme matérielle sous-jacente
GetSystemMetrics renvoie des informations relatives à l'environnement Windows
GetSystemPowerStatus obtient des informations relatives à l'état actuel de l'alimentation du système
GetSystemTime obtient l'heure actuelle du système. Cette heure utilise le format « Heure mondiale coordonnée » (c'est-à-dire UTC, également appelé GMT).
GetSystemTimeAdjustment synchronise l'horloge système interne avec une source d'horloge externe
GetThreadLocale obtient l'ID local du thread actuel
GetTickCount est utilisé pour obtenir la durée (en millisecondes) écoulée depuis le démarrage de Windows
GetTimeFormat formate une heure système dans un format spécifique pour le "lieu" actuellement spécifié
GetTimeZoneInformation obtient des informations relatives aux paramètres de fuseau horaire du système
GetUserDefaultLangID obtient l'ID de langue par défaut pour l'utilisateur actuel
GetUserDefaultLCID Obtient les paramètres « locaux » par défaut de l'utilisateur actuel
GetUserName obtient le nom de l'utilisateur actuel
GetVersion détermine les versions Windows et DOS actuellement en cours d'exécution
GetVersionEx obtient les informations de version liées à la plate-forme et au système d'exploitation
HideCaret masque le curseur (curseur) dans la fenêtre spécifiée
IsValidCodePage détermine si une page de codes est valide
IsValidLocale détermine si l'identifiant local est valide
La fonction keybd_event simule les actions du clavier
LoadKeyboardLayout charge une disposition de clavier
MapVirtualKey effectue différentes conversions de codes d'analyse et de caractères en fonction du type de mappage spécifié.
MapVirtualKeyEx effectue différentes conversions de codes d'analyse et de caractères en fonction du type de mappage spécifié.
MessageBeep joue un son système. Le plan de diffusion sonore du système est déterminé dans le panneau de commande
mouse_event simule un événement de souris
OemKeyScan détermine le code de numérisation et l'état de la touche Shift d'un caractère ASCII dans le jeu de caractères OEM
OemToChar convertit une chaîne du jeu de caractères OEM en jeu de caractères ANSI
SetCaretBlinkTime spécifie la fréquence de clignotement du curseur (curseur)
SetCaretPos spécifie la position du curseur
SetComputerName définit un nouveau nom d'ordinateur
SetCursor définit le pointeur de la souris spécifié sur le pointeur actuel
SetCursorPos définit la position du pointeur
SetDoubleClickTime définit l'intervalle de temps entre deux clics de souris consécutifs que le système considère comme un événement de double-clic.
SetEnvironmentVariable définit une variable d'environnement sur une valeur spécifiée
SetKeyboardState définit l'état actuel de chaque touche virtuelle du clavier
SetLocaleInfo modifie les informations de configuration "locales" de l'utilisateur
SetLocalTime définit l'heure locale actuelle
SetSysColors définit la couleur de l'objet affiché dans la fenêtre spécifiée
SetSystemCursor modifie n'importe quel pointeur système standard
SetSystemTime définit l'heure actuelle du système
SetSystemTimeAdjustment ajoute périodiquement une valeur d'étalonnage pour synchroniser l'horloge système interne avec une source de signal d'horloge externe.
SetThreadLocale définit les paramètres régionaux du thread actuel
SetTimeZoneInformation définit les informations de fuseau horaire du système
ShowCaret affiche le curseur (curseur) dans la fenêtre spécifiée
ShowCursor contrôle la visibilité du pointeur de la souris
SwapMouseButton détermine s'il faut permuter les fonctions des boutons gauche et droit de la souris
SystemParametersInfo obtient et définit un grand nombre de paramètres système Windows
SystemTimeToTzSpecificLocalTime convertit l'heure système en heure locale
ToAscii convertit une clé virtuelle en caractère ASCII en fonction du code de numérisation actuel et des informations du clavier.
ToUnicode convertit une clé virtuelle en caractère Unicode en fonction du code de numérisation actuel et des informations du clavier.
UnloadKeyboardLayout décharge la disposition du clavier spécifiée
VkKeyScan détermine le code de la clé virtuelle et l'état de la touche Shift en fonction d'un caractère ASCII dans le jeu de caractères Windows
sur
3.Fonction de menu
AppendMenu ajoute un élément de menu au menu spécifié
CheckMenuItem vérifie ou décoche l'élément de menu spécifié
CheckMenuRadioItem spécifie qu'un élément de menu est coché en tant qu'élément "radio"
CreateMenu crée un nouveau menu
CreatePopupMenu crée un menu contextuel vide
DeleteMenu supprime l'entrée de menu spécifiée
DestroyMenu supprime le menu spécifié
DrawMenuBar redessine le menu pour la fenêtre spécifiée
INABLEMEMEUITEM Permet ou désactive les éléments de menu spécifiés
GetMenu obtient la poignée d'un menu dans la fenêtre
GetMenucheckmarkdimensions renvoie la taille d'un coch à cocher
GetMenucontexThelpid obtient l'ID de scène d'aide d'un menu
GetMenudeFaultItem détermine quel élément dans le menu est l'élément par défaut
GetMenuItemCount renvoie le nombre d'éléments (éléments de menu) dans le menu
GetMenuItemid renvoie l'ID de menu de l'élément situé à la position spécifiée dans le menu
GetMenuIteMinfo obtient (reçoit) des informations spécifiques liées à un élément de menu
GetMenuItemRect charge les informations de coordonnées de l'écran de l'élément de menu spécifié dans un rectangle
GetMenustate obtient des informations liées à l'état de l'élément de menu spécifié
GetMenustring obtient la chaîne de l'élément de menu spécifié
GetSubMenu obtient la poignée d'un menu contextuel, qui est situé à la position spécifiée dans le menu
GetSystemMenu obtient la poignée du menu système de la fenêtre spécifiée
HilitemeMiUtem contrôle l'état de mise en évidence des éléments de menu de niveau supérieur
InsertMenu insère une entrée de menu à la position spécifiée dans le menu, déplaçant les autres entrées vers le nécessaire
INSERTMENUITEM INSERT un nouvel élément de menu
Ismenu détermine si la poignée spécifiée est une poignée de menu
LoadMenu charge un menu à partir du module ou de l'instance d'application spécifiée
LoadMenuIndirect charge un menu
MenuItemFrUpoint détermine quel élément de menu contient un point spécifié à l'écran
Modifiermenu modifie les entrées de menu
RemoveMenu supprime l'entrée du menu spécifié
SetMenu définit le menu de la fenêtre
SetMenucontexThelpid définit l'ID de scène d'aide d'un menu
SetMenudeFaultItem définit un élément de menu comme élément par défaut
SetMenuImbitMaps définit un bitmap spécifique à utiliser dans l'élément de menu spécifié au lieu du symbole de vérification standard (√)
SetMenuIteMinfo définit les informations spécifiées pour un élément de menu
TrackPopupMenu affiche un menu contextuel n'importe où sur l'écran
TrackPopupMenuex est similaire à TrackPopupMenu, sauf qu'il offre des fonctionnalités supplémentaires
sur
Voici plusieurs définitions de types sur les fonctions de menu
MENUIMEMINFO Cette structure contient des informations sur les éléments de menu
TPMPARAMS Cette structure est utilisée par la fonction trackpopupmuex pour prendre en charge des fonctionnalités supplémentaires
4. Fonction de dessin
AbortPath rejette tous les chemins sélectionnés dans la scène de l'appareil spécifié. Annule également toute création de chemin actuellement en cours
Anglearc trace une ligne avec un arc de connexion
Arcdraw un arc
BeginPath démarre une branche de chemin
CancelDC annule une longue opération de dessin dans un autre thread
Accord de dessiner un accord
Closeenhmetafile ferme la scène de l'appareil métafile amélioré spécifié et renvoie une poignée au métafile nouvellement créé
FIRCULAGE PROCHEMENT Lorsque vous dessinez un chemin, fermez la figure actuellement ouverte.
CloseMetafile ferme la scène de l'appareil métafile spécifié et renvoie une poignée au métafile nouvellement créé
Copyenhmetafile fait une copie (copie) du métafile amélioré spécifié
Copymetafile fait une copie du métafile spécifié (standard)
CreateBrushIndirect crée un pinceau basé sur une structure de données Logbrush
CreateBpatternbrush crée un pinceau à l'aide d'un bitmap indépendant de l'appareil pour spécifier le style de pinceau (motif)
Createenhmetafile crée une scène de dispositive Metafile améliorée
CreateHatchBrush crée un pinceau avec un motif d'ombre
CreateMetafile crée une scène de l'appareil métafile
CreatePatternbrush crée un pinceau utilisant un bitmap qui spécifie un motif de pinceau
Createpencate un pinceau avec le style, la largeur et la couleur spécifiés
CreatePenIndirect crée un stylo basé sur la structure logpen spécifiée
CREATESolidbrush crée un pinceau avec une couleur unie
DeleenHmetafile supprime le métafile amélioré spécifié
Deletemetafile supprime le métafile spécifié
DeleteObject supprime l'objet GDI et toutes les ressources système utilisées par l'objet seront publiées.
Drawedge tire une bordure rectangulaire en utilisant le style spécifié
La fonction d'échappement DrawesCape envoie des données directement au pilote de dispositif d'affichage
Drawfocusrect dessine un rectangle de focus
DrawFrameControl dessine un contrôle standard
Drawstate applique une variété d'effets à une image ou à une opération de dessin
L'ellipse dessine une ellipse entourée d'un rectangle spécifié
Le chemin d'œil cesse de définir un chemin
Enumenhmetafile répertorie les enregistrements de métafile individuels pour un métafile amélioré.
Enummetafile énumère les enregistrements de métafile individuel pour un métafile Windows standard
Enumobjects énumère les pinceaux et les pinceaux qui peuvent être utilisés avec la scène de l'appareil spécifié
ExcreatePen crée une brosse étendue (ornementale ou géométrique)
ExtfloodFill remplit une zone avec le pinceau actuellement sélectionné dans la scène de l'appareil spécifié.
FillPath ferme toutes les formes ouvertes sur le chemin et les remplit avec le pinceau actuel
Fillrect remplit un rectangle avec la brosse spécifiée
AplatirPath convertit toutes les courbes dans un chemin en segments de ligne
Floodfill remplit une zone dans la scène de l'appareil spécifié avec le pinceau actuellement sélectionné
Framerect dessine une bordure autour d'un rectangle en utilisant la brosse spécifiée
GDICOMment ajoute un message de commentaire à la scène de l'appareil MetaFile amélioré spécifié
Gdiflush effectue toutes les opérations de dessin en attente
Gdigetbatchlimit détermine le nombre de commandes de dessin GDI dans la file d'attente
GDiSetBatchLimit spécifie le nombre de commandes de dessin GDI
GetArcDirection détermine la direction de dessin actuel lors du dessin d'un arc.
GetBKColor obtient la couleur d'arrière-plan actuelle de la scène de l'appareil spécifié
GetBKMode obtient le mode de remplissage en arrière-plan actuel pour la scène de l'appareil spécifié.
Getbrushorgex détermine le point de départ du pinceau actuellement sélectionné dans la scène de l'appareil spécifié
GetCurrentObject obtient l'objet actuellement sélectionné du type spécifié
GetCurrentPositionEx obtient la position du stylo actuelle dans la scène de l'appareil spécifié
Getenhmetafile obtient la poignée métafile d'un métafile amélioré contenu dans le fichier disque
GETENHMETAFILEBITS COPIES Le métafile amélioré spécifié dans un tampon de mémoire
GETENHMETAFILEDEDESCRIPTION Renvoie une description d'un métafile amélioré
GetenhmetafileHeader obtient l'en-tête du métafile du métafile amélioré
Getenhmetafilepalettentries obtient tout ou partie de la palette Metafile améliorée
Getmetafile obtient la poignée Metafile du métafile contenu dans un fichier disque
Getmetafilebitsex copie le métafile spécifié dans un tampon de mémoire
GetmiterLimit obtient le réglage de la limite de pente (mitre) de la scène de l'appareil
GetNeaStColor obtient une couleur unie la plus proche de la couleur spécifiée en fonction des capacités d'affichage de l'appareil.
GetObjectapi obtient une structure décrivant l'objet spécifié
GetObjectType détermine le type d'objet GDI référencé par la poignée spécifiée
GetPath obtient une série de données qui définissent le chemin actuel
GetPixel obtient la valeur RVB d'un pixel dans la scène de l'appareil spécifié
GetPolyFillMode obtient le mode de remplissage du polygone pour la scène de l'appareil spécifié
Getrop2 obtient le mode de dessin actuel pour la scène de l'appareil spécifié
Getstockobject obtient un objet inhérent (stock)
GetSysColorbrush obtient un pinceau pour toute couleur système standard
GetwinmetafileBits convertit une métafile améliorée en un métafile Windows standard en remplissant un tampon avec des données pour un métafile standard
Invertrect inverse un rectangle spécifié dans la scène de l'appareil en inversant la valeur de chaque pixel.
Linedda énumère tous les points du segment de ligne spécifié
LineTo utilise le stylo actuel pour tracer une ligne de la position actuelle à un point spécifié.