MoBiRo
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Начал писать программу по скачиванию обновлений для одной игры, но наткнулся на грабли. У меня почему-то не срабатывает GUICtrlCreatePic с первого раза, только когда два раза пропишешь - тогда срабатывает... Код: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include <TreeViewConstants.au3> #include <EditConstants.au3> #include <StaticConstants.au3> #Include <File.au3> Global $gINI = "Game.ini" Global $tv_Menu, $lb_Name, $Ls_List, $lb_VersionNeed, $lb_CurrentVersion, $pc_Image, $ed_Info, $bt_Download Global $FileName Global $Path = "C:\" #Region ### START Koda GUI section ### Form= $fr_Main = GUICreate("Download Manager", 626, 338, 4, 449) $Tab1 = GUICtrlCreateTab(0, 6, 625, 326, $WS_CLIPSIBLINGS) GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) GUICtrlCreateTabItem("Game") $tv_Menu = GUICtrlCreateTreeView(8, 32, 113, 292, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) $Ls_List = GUICtrlCreateList("", 128, 32, 209, 292) $lb_Name = GUICtrlCreateLabel("File Name", 344, 32, 87, 28) GUICtrlSetFont(-1, 14, 800, 2, "MS Sans Serif") $lb_VersionNeed = GUICtrlCreateLabel("Version Need", 344, 64, 79, 17) $lb_CurrentVersion = GUICtrlCreateLabel("Current Version", 344, 88, 87, 17) $pc_Image = GUICtrlCreatePic("", 344, 172, 276, 150, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) $ed_Info = GUICtrlCreateEdit("Information about file", 344, 112, 273, 57, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN)) GUICtrlSetData(-1, "") $bt_Download = GUICtrlCreateButton("Download", 512, 80, 107, 25, 0) GUICtrlCreateTabItem("Maps") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### _GameLoadMenu () While 1 $nMsg = GUIGetMsg() If $nMsg = $GUI_EVENT_CLOSE Then Exit _GameSelectMenu ($nMsg) _GameSelectItems ($nMsg) If $nMsg = $bt_Download Then _GameDownload () WEnd Func _GameLoadMenu () $var = IniReadSection($gINI, "level1") Global $Menu [$var[0][0] + 1][2] If @error Then MsgBox(4096, "", "Error occurred, probably no INI file.") Else For $i = 1 To $var[0][0] $Menu [$i][0] = GUICtrlCreateTreeViewItem($var[$i][0], $tv_Menu) GUICtrlSetColor(-1, 0x0000C0) $Menu [$i][1] = $var[$i][0] Next $Menu[0][0] = $i - 1 EndIf EndFunc Func _GameSelectMenu ($nMsg) For $i = 1 to $Menu [0][0] If $Menu[$i][0] = $nMsg Then $var = IniReadSection($gINI, $Menu [$i][1]) If IsArray($var) Then Global $Items [$var[0][0] + 1][2] If @error Then MsgBox(4096, "", "Error occurred, probably no INI file.") Else GUICtrlSetData($Ls_List,"") For $j = 1 To $var[0][0] $Items [$j][0] = GUICtrlSetData($Ls_List, GUICtrlRead($Ls_List) & $var[$j][0]) $Items [$j][1] = $var[$j][0] Next $Items [0][0] = $j - 1 EndIf Else GUICtrlSetData($Ls_List, "") EndIf EndIf Next EndFunc Func _GameSelectItems ($nMsg) If GUICtrlRead($Ls_List) <> "" Then For $i = 1 to $Items [0][0] If ($Ls_List = $nMsg) And (GUICtrlRead($Ls_List) = $Items [$Items [0][0] - ($i - 1)][1]) Then Dim $SelectedItem = $Items [$Items [0][0] - ($i - 1)][1] Dim $szDrive, $szDir, $szFName, $szExt GUICtrlSetData($lb_Name, IniRead($gINI, $SelectedItem, "Name", "Error")) GUICtrlSetData($lb_VersionNeed, IniRead($gINI, $SelectedItem, "VersionNeed", "Error")) GUICtrlSetData($ed_Info, IniRead($gINI, $SelectedItem, "Info", "Error")) $FileName = IniRead($gINI, $SelectedItem, "File", "Error") $Image = IniRead($gINI, $SelectedItem, "Image", "Error") If $Image <> "Error" Then _PathSplit($Image, $szDrive, $szDir, $szFName, $szExt) InetGet($Image, "small" & $szExt) GUICtrlCreatePic("small" & $szExt, 344, 172, 276, 150) ;~ Else ;~ GUICtrlCreatePic("1.gif", 344, 172, 276, 150) EndIf EndIf Next EndIf EndFunc Func _GameDownload () Dim $szDrive, $szDir, $szFName, $szExt _PathSplit($FileName, $szDrive, $szDir, $szFName, $szExt) InetGetSize($FileName) InetGet($FileName, $Path & $szFName & $szExt) EndFunc | Файл Game.ini Код: [Settings] level1=2 [Level1] Need For Kill= Tribes-X= [Need For Kill] 0.75= 0.64= [0.75] Name=0.75 VersionNeed=123 Info=qwerty File= Image=http://userserve-ak.last.fm/serve/64s/39391501.jpg [0.64] Name=0.65 VersionNeed=321 Info=yrewq File=new2.rar | Вставка рисунка находится в функции _GameSelectItems. Если вызов создания рисунка дублировать, то всё отображается. Или не дублируя вызов два раза щёлкнуть на 0.75... И это, если вы можите как-то оптимизировать мой кодик, то буду благодарен, а то тут месиво >_< хотя я в нём прекрасно разбираюсь, ну пока не забыл, а когда забуду мне даже комментарии в коде не помогут)))) |