Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Диалог и изображениями

Ответить
Настройки темы
Диалог и изображениями

Новый участник


Сообщения: 25
Благодарности: 1

Профиль | Отправить PM | Цитировать


Всем доброго вечера !

Подскажите пожалуйста, как можно реализовать следующий сценарий:
Необходимо создать окно, в котором будут отображаться миниатюры изображений
из определенной папки (пример прилагаю). Окно фиксированного размера + скроллбар (если объектов больше определенного числа)
При нажатии на изображение - установка в качестве фона раб.стола + уведомление
При отсутствии объектов - уведомление
Снимок.JPG

Не получается никак, но пока еще только раскуриваю тему.

Отправлено: 15:38, 18-12-2018

 

Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3035
Благодарности: 1000

Профиль | Сайт | Отправить PM | Цитировать


Цитата Malukov.Dmitry:
Необходимо создать окно, в котором будут отображаться миниатюры изображений »
Для начала см. пример к _GUIScrollBars_Init.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 01:46, 02-03-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3035
Благодарности: 1000

Профиль | Сайт | Отправить PM | Цитировать


Как то так:

Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>
#include 'GUIScrollbars_Size.au3'

Global $iGUI_W = 600
Global $iGUI_H = 600

Global $sImages_Path = @ScriptDir & '\Images'

$hGUI = GUICreate('Example', $iGUI_W, $iGUI_H)

$aImages = _Images_Load(200, 200)

GUIRegisterMsg($WM_VSCROLL, 'WM_VSCROLL')
GUISetState()

While 1
    $iMsg = GUIGetMsg()

    Switch $iMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $aImages[1][0] To $aImages[$aImages[0][0]][0]
            For $i = 1 To $aImages[0][0]
                If $iMsg = $aImages[$i][0] Then
                    MsgBox(0, @ScriptName, 'Image ckicked:' & @CRLF & $aImages[$i][1], 0, $hGUI)
                    ExitLoop
                EndIf
            Next
    EndSwitch
WEnd

Func _Images_Load($iWidth, $iHeight)
    If $iWidth > $iGUI_W Then
        Return 0
    EndIf

    Local $hFind = FileFindFirstFile($sImages_Path & '\*.jpg')
    Local $iTop = 0, $iLeft = 0
    Local $aImages[1][2], $aSize

    While 1
        $sFile = FileFindNextFile($hFind)
        If @error Then ExitLoop

        $aImages[0][0] += 1
        ReDim $aImages[$aImages[0][0] + 1][2]

        $aImages[$aImages[0][0]][0] = GUICtrlCreatePic($sImages_Path & '\' & $sFile, $iLeft, $iTop, $iWidth, $iHeight)
        $aImages[$aImages[0][0]][1] = $sImages_Path & '\' & $sFile

        $iLeft += $iWidth

        If $iLeft + $iWidth > $iGUI_W Then
            $iLeft = 0
            $iTop += $iHeight
        EndIf
    WEnd

    If $iTop + $iHeight > $iGUI_H Then
        _GUIScrollBars_Init($hGUI)
        _GUIScrollBars_ShowScrollBar($hGUI, $SB_VERT, True)
        _GUIScrollBars_ShowScrollBar($hGUI, $SB_HORZ, False)

        $aSize = _GUIScrollbars_Size(0, $iTop + ($iHeight / 2), $iGUI_W, $iGUI_H)

        If Not @error Then
            _GUIScrollBars_SetScrollInfoPage($hGUI, $SB_VERT, $aSize[2])
            _GUIScrollBars_SetScrollInfoMax($hGUI, $SB_VERT, $aSize[3])
        EndIf
    EndIf

    FileClose($hFind)

    Return $aImages
EndFunc

Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
    #forceref $Msg, $wParam, $lParam
    Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
    Local $iIndex = -1, $yChar, $yPos
    Local $Min, $Max, $Page, $Pos, $TrackPos

    For $x = 0 To UBound($aSB_WindowInfo) - 1
        If $aSB_WindowInfo[$x][0] = $hWnd Then
            $iIndex = $x
            $yChar = $aSB_WindowInfo[$iIndex][3]
            ExitLoop
        EndIf
    Next
    If $iIndex = -1 Then Return 0

    Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
    $Min = DllStructGetData($tSCROLLINFO, 'nMin')
    $Max = DllStructGetData($tSCROLLINFO, 'nMax')
    $Page = DllStructGetData($tSCROLLINFO, 'nPage')
    $yPos = DllStructGetData($tSCROLLINFO, 'nPos')
    $Pos = $yPos
    $TrackPos = DllStructGetData($tSCROLLINFO, 'nTrackPos')

    Switch $nScrollCode
        Case $SB_TOP
            DllStructSetData($tSCROLLINFO, 'nPos', $Min)
        Case $SB_BOTTOM
            DllStructSetData($tSCROLLINFO, 'nPos', $Max)
        Case $SB_LINEUP
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos - 1)
        Case $SB_LINEDOWN
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos + 1)
        Case $SB_PAGEUP
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos - $Page)
        Case $SB_PAGEDOWN
            DllStructSetData($tSCROLLINFO, 'nPos', $Pos + $Page)
        Case $SB_THUMBTRACK
            DllStructSetData($tSCROLLINFO, 'nPos', $TrackPos)
    EndSwitch

    DllStructSetData($tSCROLLINFO, 'fMask', $SIF_POS)
    _GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
    _GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)

    $Pos = DllStructGetData($tSCROLLINFO, 'nPos')
    If ($Pos <> $yPos) Then
        _GUIScrollBars_ScrollWindow($hWnd, 0, $yChar * ($yPos - $Pos))
        $yPos = $Pos
    EndIf

    Return $GUI_RUNDEFMSG
EndFunc
Нужно скачать GUIScrollbars_Size.au3 тут и положить в папку со скриптом.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 02:39, 02-03-2019 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Диалог и изображениями

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Вид папок с изображениями. Balancer Microsoft Windows 2000/XP 1 05-10-2010 10:22
Интерфейс - Убрать диалог denis52261 Microsoft Windows 2000/XP 4 20-11-2009 08:16
Диалог OpenFile Sir Z Программирование и базы данных 5 21-03-2006 09:28
Работа с изображениями в Builder C++ Sir Z Программирование и базы данных 12 09-03-2006 23:11
помощь с изображениями idol01 Вебмастеру 8 05-08-2005 20:48




 
Переход