Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] _GUICtrlSlider_Create - свой курсор для сайдера. (http://forum.oszone.net/showthread.php?t=149914)

FlatX007 07-09-2009 08:08 1213061

_GUICtrlSlider_Create - свой курсор для сайдера.
 
Можно ли поставить свой курсор на элемент слайдер созданный через - _GUICtrlSlider_Create ?

Не флужу 08-09-2009 00:20 1213736

Привет старый :tongue:

Код:

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

Diamond 08-09-2009 02:56 1213782

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 1213792

Diamond, крутотень!! как раз - то ,что нужно.


Время: 02:39.

Время: 02:39.
© OSzone.net 2001-