Войти

Показать полную графическую версию : [решено] _GUICtrlSlider_Create - свой курсор для сайдера.


FlatX007
07-09-2009, 08:08
Можно ли поставить свой курсор на элемент слайдер созданный через - _GUICtrlSlider_Create ?

Не флужу
08-09-2009, 00:20
Привет старый :tongue:


GUICtrlSetCursor ( controlID, cursorID )


Не знаю, поможет- ли. В справке надыбал :)

Diamond
08-09-2009, 02:56
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, крутотень!! как раз - то ,что нужно.




© OSzone.net 2001-2012