Crée une nouvelle forme pour le curseur système et attribue la propriété du curseur à la fenêtre spécifiée
#include <WinAPIRes.au3>
_WinAPI_CreateCaret ( $hWnd, $hBitmap [, $iWidth = 0 [, $iHeight = 0]] )
$hWnd | Handle de la fenêtre qui possède le curseur. |
$hBitmap | Handle du bitmap qui définit la forme du curseur. Si ce paramètre est 0, le curseur est uni. Si ce paramètre est 1, le curseur est gris. Si ce paramètre est un handle de bitmap, le curseur est le bitmap spécifié. |
$iWidth |
[optionnel] La largeur du curseur en unités logiques. Si ce paramètre est 0 (valeur par défaut), la largeur est définie à la largeur de la bordure des fenêtres définie par le système. Si $hBitmap est un handle de bitmap, _WinAPI_CreateCaret() ne tient pas compte de ce paramètre. |
$iHeight |
[optionnel] La hauteur du curseur en unités logiques. Si ce paramètre est 0 (valeur par défaut), la hauteur est définie à la hauteur de la bordure des fenêtres définie par le système. Si $hBitmap est un handle de bitmap, _WinAPI_CreateCaret() ne tient pas compte de ce paramètre. |
Succès: | Retourne True. |
Échec: | Retourne False, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur. |
_WinAPI_CreateCaret() détruit automatiquement la forme du curseur précédent, le cas échéant, quelle que soit la fenêtre qui possède le curseur.
Le curseur est caché jusqu'à ce que l'application appelle la fonction _WinAPI_ShowCaret() pour rendre le curseur visible.
Le système fournit un curseur en file d'attente. Une fenêtre devrait créer un curseur que lorsqu'elle a le focus clavier ou lorsqu'elle est active.
La fenêtre doit détruire le curseur avant de perdre le focus du clavier ou de devenir inactive.
Vous pouvez obtenir la largeur ou la hauteur de la bordure système de la fenêtre en utilisant la fonction _WinAPI_GetSystemMetrics(), en précisant les valeurs $SM_CXBORDER et $SM_CYBORDER. L'utilisation de la largeur ou de la hauteur de la bordure des fenêtres garantit que le curseur sera visible sur un écran haute résolution.
_WinAPI_GetSystemMetrics, _WinAPI_ShowCaret
Consultez CreateCaret dans la librairie MSDN.
#include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WinAPIConv.au3> #include <WinAPIGdi.au3> #include <WinAPIHObj.au3> #include <WinAPIRes.au3> #include <WindowsConstants.au3> Global $g_vDuration = Default, $g_hBitmap = _WinAPI_CreateSolidBitmap(0, 0x00AEFF, 10, 14) OnAutoItExitRegister('OnAutoItExit') Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 400, 93) Local $idInput = GUICtrlCreateInput('', 20, 20, 360, 20) Local $idButton = GUICtrlCreateButton('Exit', 165, 59, 70, 23) GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND') GUISetState(@SW_SHOW) Global $iMsg Do $iMsg = GUIGetMsg() Until $iMsg = $GUI_EVENT_CLOSE Or $iMsg = $idButton Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam) #forceref $iMsg If $hWnd = $hForm Then If _WinAPI_LoWord($wParam) = $idInput Then Switch _WinAPI_HiWord($wParam) Case $EN_KILLFOCUS _WinAPI_HideCaret($lParam) _WinAPI_DestroyCaret() _WinAPI_SetCaretBlinkTime($g_vDuration) $g_vDuration = Default Case $EN_SETFOCUS $g_vDuration = _WinAPI_SetCaretBlinkTime(-1) _WinAPI_CreateCaret($lParam, $g_hBitmap) _WinAPI_ShowCaret($lParam) EndSwitch EndIf EndIf Return $GUI_RUNDEFMSG EndFunc ;==>WM_COMMAND Func OnAutoItExit() _WinAPI_DeleteObject($g_hBitmap) If Not IsKeyword($g_vDuration) Then _WinAPI_SetCaretBlinkTime($g_vDuration) EndIf EndFunc ;==>OnAutoItExit