|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Диалог и изображениями |
|
Диалог и изображениями
|
Новый участник Сообщения: 26 |
Профиль | Отправить PM | Цитировать
Всем доброго вечера !
Подскажите пожалуйста, как можно реализовать следующий сценарий: Необходимо создать окно, в котором будут отображаться миниатюры изображений из определенной папки (пример прилагаю). Окно фиксированного размера + скроллбар (если объектов больше определенного числа) При нажатии на изображение - установка в качестве фона раб.стола + уведомление При отсутствии объектов - уведомление Снимок.JPG Не получается никак, но пока еще только раскуриваю тему. |
|
Отправлено: 15:38, 18-12-2018 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Malukov.Dmitry:
|
|
------- Отправлено: 01:46, 02-03-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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 |
------- Отправлено: 02:39, 02-03-2019 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - Вид папок с изображениями. | 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 |
|