FlatX007
07-09-2009, 08:08
Можно ли поставить свой курсор на элемент слайдер созданный через - _GUICtrlSlider_Create ?
Не флужу
08-09-2009, 00:20
Привет старый :tongue:
GUICtrlSetCursor ( controlID, cursorID )
Не знаю, поможет- ли. В справке надыбал :)
FlatX007, Можно через WM_SETCURSOR
#include <GuiConstants.au3>
#include <GuiSlider.au3>
#include <WinApi.au3>
#include <WindowsConstants.au3>
$hGui = GUICreate("Test_Cursor", 400, 200)
$hCursor1 = LoadCursor(0, 32649)
$hCursor2 = LoadCursor(0, 32644)
$hSlider = _GUICtrlSlider_Create($hGui, 20, 20, 320, 20, BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS))
GUIRegisterMsg($WM_SETCURSOR, "WM_SETCURSOR")
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
DestroyCursor($hCursor1)
DestroyCursor($hCursor2)
Exit
EndSwitch
WEnd
Func WM_SETCURSOR($HWnd, $MsgID, $wParam, $lParam)
Local $iHitTest = BitAND($lParam, 0xFFFF) ;LoWord
Local $iMouseEvent = BitShift($lParam, 16) ;HiWord
If $wParam = $hSlider Then
If $iMouseEvent = 513 Then
_WinAPI_SetCursor($hCursor2)
Else
_WinAPI_SetCursor($hCursor1)
EndIf
Return 1
EndIf
EndFunc
;~ Загружает курсор из файла ("*.cur;*.ani;*.ico")
;~ Вслучае успеха возвращает идентификатоp нового куpсоpа. False - в случае ошибки.
;~ $sFile - путь к иконному файлу.
Func LoadCursorFromFile($sFile)
Local $hCursor
$hCursor = DllCall("user32.dll","hwnd", "LoadCursorFromFileA", "str", $sFile)
If @error Then Return SetError(@error, 0 , False)
Return SetError(0, 0, $hCursor[0])
EndFunc
;~ $hInstance: Экземпляp модуля, исполнимый файл котоpого содеpжит куpсоp или 0 для пpедопpеделенного куpсоpа.
;~ $CursorName: Идентификатоp куpсоpа или пpедопpеделенный куpсоp.
Func LoadCursor($hInstance, $CursorName)
Local $hCursor = DllCall("user32.dll", "hwnd", "LoadCursorA", "hwnd", $hInstance, "int", $CursorName)
If @error Then Return SetError(@error, 0 , False)
Return $hCursor[0]
EndFunc
;~ Уничтожает курсор и освобождает связанную с ним память.
;~ $hCursor - Идентификатоp куpсоpа.
;~ В случае успешного завеpшения возвращает True
Func DestroyCursor($hCursor)
Local $ret = DllCall("user32.dll", "int", "DestroyCursor", "hwnd", $hCursor)
If @error Then Return SetError(@error, 0 , False)
Return SetError(0, 0, $ret[0] <> 0)
EndFunc
FlatX007
08-09-2009, 04:22
Diamond, крутотень!! как раз - то ,что нужно.
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.