Уроки PureBasic

Categories

Other Sites

Other Sites

Other Sites



             Поиск по сайту

     

                


    Оставить мне сообщение:



Браузер на PureBasic

Уроки PureBasic

Не много переработанный код Web_browser из  CodeArchiv.

Добавлен пункт "Избранные" ссылки.
Добавлен поиск, с возможностью выбора Google и Яндекс
Отображение нового адреса ссылки при переходе.

Браузер PureBasic
Уроки PureBasic

Скачать архив

Код браузера для версии PureBasic 4.40 :

;------------------------------------------------------ ; Браузер ; ; 2010 год ; ; PureBasic 4.40 ; ;------------------------------------------------------- UsePNGImageDecoder() ; инициализация PNG декодера UseJPEGImageDecoder() ; инициализация JPEG декодера Enumeration #Window_0 #Strin_1 #Strin_2 #poisk #web #But #But_1 #But_2 #But_3 #Imag #Imag_1 #GO_Search EndEnumeration Global text.s , zapros.s ;{--Эта процедура определяет находится ли курсор мышки над заданым окном или гаджетом------- Procedure IsMouseOver(wnd) GetWindowRect_(wnd,re.RECT) GetCursorPos_(pt.POINT) Result.l = PtInRect_(@re, pt\x | (pt\y<<32) ) ProcedureReturn Result EndProcedure ;}------------------------------------------------------------------------------------------ ;{----------- курсор рука над изоброжением-------------------------------------------------- Procedure Search(Event) Static Button, Buton_DOWN If Event=#WM_MOUSEMOVE ; Переместилась мышка If IsMouseOver(GadgetID(#Imag)) myCursor=LoadCursor_(0,#IDC_HAND) ; курсор рука SetCursor_(myCursor) ; курсор рука EndIf EndIf EndProcedure ;}------------------------------------------------------------------------------------------ ;{-------загрузаем в #Strin_1 полученый адрес новой ссылки при переходе--------------------- Procedure NavigationCallback(Gadget, Url$) SetGadgetText(#Strin_1, Url$) ProcedureReturn #True EndProcedure ;}------------------------------------------------------------------------------------------ ;{----------------Процедура поиск----------------------------------------------------------- Procedure Poisk() text.s = GetGadgetText(#poisk) ; какой выбран поиск (yandex или google) zapros.s = GetGadgetText(#Strin_2) If text = "Яндекс" SetGadgetState(#Imag,ImageID(4)) ; изменяем текущее состояние изображенния SetGadgetText(#web, "http://yandex.ua/yandsearch?text=" + zapros) ElseIf text = "Google" SetGadgetState(#Imag,ImageID(5)) ; изменяем текущее состояние изображенния SetGadgetText(#web, "http://www.google.com/search?hl=ru&q=" + zapros) EndIf EndProcedure ;}----------------------------------------------------------------------------------------- ;{--------Дуйствие, если курсор над поиском по кнопке "Enter"------------------------------ Procedure Strin_2(hwnd, msg, wParam, lParam) *PointOldEditFunc=GetWindowLong_(hWnd,#GWL_USERDATA) If msg=258 If wParam=13 msg=0 Poisk() EndIf EndIf ProcedureReturn CallWindowProc_(*PointOldEditFunc,hwnd, msg, wParam, lParam) EndProcedure ;}----------------------------------------------------------------------------------------- CatchImage(0, ?Im0, ?Im0End -?Im0 ) CatchImage(1, ?Im1, ?Im1End -?Im1 ) CatchImage(2, ?Im2, ?Im2End -?Im2 ) CatchImage(3, ?Im3, ?Im3End -?Im3 ) CatchImage(4, ?Im4, ?Im4End -?Im4 ) CatchImage(5, ?Im5, ?Im5End -?Im5 ) CatchImage(6, ?Im6, ?Im6End -?Im6 ) OpenWindow (#Window_0, 0, 0, 1000, 800, "Браузер на PureBasic", #PB_Window_MinimizeGadget |#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered |#PB_Window_SizeGadget) SetWinBackgroundImage(WindowID(0), ImageID(3) ) SmartWindowRefresh(#Window_0 ,1) ; для уменьшения мигания окна при изменении размера StringGadget(#Strin_1, 125, 3, 580, 20, "http://purebasic.info/") ButtonImageGadget(#But_1,10,2,22,22,ImageID(1)) ; браузер <<< ButtonImageGadget(#But, 35,2,32,22,ImageID(0)) ; обновить браузер ButtonImageGadget(#But_3,70,2,22,22,ImageID(6)) ; стоп браузер ButtonImageGadget(#But_2,95,2,22,22,ImageID(2)) ; браузер >>> WebGadget(#web, 5,30,990,740, "") SetGadgetAttribute(#web, #PB_Web_NavigationCallback, @NavigationCallback()) ; для получения нового URL StringGadget(#Strin_2, 722, 6, 175, 16, "Поиск",#PB_String_BorderLess) ImageGadget(#Imag, 900, 5, 16, 16,ImageID(4)) ; лого поиска ComboBoxGadget(#poisk, 925, 3, 65, 20) AddGadgetItem (#poisk, -1, "Яндекс") AddGadgetItem (#poisk, -1, "Google") SetGadgetState(#poisk, 0) ; начальное положение ;----------------нажатие 'Enter' в поиске------------------------------ *Old_PointOldEditFunc=GetWindowLong_(GadgetID(#Strin_2), #GWL_WNDPROC) SetWindowLong_(GadgetID(#Strin_2),#GWL_USERDATA, *Old_PointOldEditFunc) SetWindowLong_(GadgetID(#Strin_2), #GWL_WNDPROC, @Strin_2()) ;---------------------------------------------------------------------- SetGadgetText( #web, GetGadgetText(#Strin_1)) ; загружаем при старте браузер a=101 ;------------------Меню-------------------- If CreateMenu(1, WindowID(#Window_0)) MenuTitle("Файл") MenuItem(1, "Открыть") MenuItem(2, "Сохранить") MenuItem(3, "Выход") MenuTitle("Избранное") MenuItem(0, "Создать ссылку" ) MenuItem(00, "" ) MenuItem(333, "Удалить загруженную ссылку" ) MenuItem(00, "" ) MenuBar() MenuItem(100, "" ) If OpenPreferences("url.pcs") PreferenceGroup("адрес") If ExaminePreferenceKeys() While NextPreferenceKey()>0 ; пока в группе "адрес" есть записи keyValue$ = PreferenceKeyValue() keyValue$ = ReplaceString(keyValue$, "~", "=") ; заменяем "~" на "=" MenuItem(a, keyValue$ ) ; создаём меню с 101 позиции и записываем адреса по порядку a=a+1 Wend EndIf ClosePreferences() EndIf MenuTitle("Информация") MenuItem(4, "Помощь") MenuItem(4, "О программе") EndIf ;------------------------------------------ Repeat Event = WaitWindowEvent() Window = EventWindow() Gadget = EventGadget() If Event=#PB_Event_SizeWindow ; Изменяем размер браузера при изменении размеров окна ResizeGadget(#Web,#PB_Ignore,#PB_Ignore, WindowWidth(#Window_0)-10, WindowHeight(#Window_0)-60) EndIf Select Event Case #PB_Event_Gadget Select EventGadget() ;----------------------------------Поиск--------------------------------------- Case #Imag ; при нажатии на изображение Poisk() ;------------------------------------------------------------------------------- Case #poisk ; выбор поиска If EventType()=1 text.s = GetGadgetText(#poisk) zapros.s = GetGadgetText(#Strin_2) If text = "Яндекс" SetGadgetState(#Imag,ImageID(4)) ; изменяем текущее состояние изображенния ElseIf text = "Google" SetGadgetState(#Imag,ImageID(5)) ; изменяем текущее состояние изображенния EndIf EndIf ;------------------------------------------------------------------------------- Case #But_1 SetGadgetState(#Web, #PB_Web_Back) ; вернуться на шаг назад в браузере Case #But SetGadgetText(#web, GetGadgetText(#Strin_1)) ; обновить браузер Case #But_2 SetGadgetState(#Web, #PB_Web_Forward); вернуться на шаг вперёд в браузере Case #But_3 SetGadgetState(#Web, #PB_Web_Stop) ; Stop браузер EndSelect EndSelect Menu=EventMenu() ; Узнаём идентификатор пункта меню If Event= #PB_Event_Menu ; Обрабатываем события от меню. Select Menu Case 0 url.s = GetGadgetText(#Strin_1) ; получаем адрес url.s = ReplaceString(url.s, "=", "~") ; заменяем перед записью "=" на "~" If url.s > "" ; если строка не пустая OpenPreferences("url.pcs") ; открыть файл с настройками PreferenceGroup("адрес") ; раздел адрес WritePreferenceString(url.s, url.s) ; запись нового адреса ClosePreferences() a =a+1 ; увеличиваем номер пустой закладки EndIf InsertMenu_(MenuID(1), 100, #MF_BYCOMMAND , a, url.s) ; api функция добавляет новый пункт меню, перед 101 пунктом DrawMenuBar_(WindowID(#Window_0)) ; перирисовка ;-----------16 заготовок под закладки------------ Case 101 To 116 Text.s = GetMenuItemText(1, EventMenu()) SetGadgetText( #web, Text) ; загружаем адрес закладки в браузер SetGadgetText( #Strin_1, Text) ; загружаем адрес закладки в #Strin_1 ;----------------------------------------------- Case 3 ; выход из программы End Case 333 del.s = GetGadgetText(#Strin_1) del.s = ReplaceString(del.s, "=", "~") ; заменяем перед удалением "=" на "~" If OpenPreferences("url.pcs") PreferenceGroup("адрес") RemovePreferenceKey(del.s) ; удаляем пункт, который загружен в #Strin_1 ClosePreferences() EndIf MessageRequester("Ссылка удалена !", " Внимание ! "+Chr(10)+"Возможно востановить ссылку, пока она"+Chr(10)+" загруженна в браузер", #MB_OK|#MB_ICONQUESTION) EndSelect EndIf Search(Event) ; курсор рука над лого: поиск If Event = #PB_Event_CloseWindow Break EndIf ForEver DataSection Im0: IncludeBinary "arrow_refresh.png" Im0End: Im1: IncludeBinary "назад_1.png" Im1End: Im2: IncludeBinary "вперёд_1.png" Im2End: Im3: IncludeBinary "fon.png" Im3End: Im4: IncludeBinary "yandex.png" Im4End: Im5: IncludeBinary "google_1.png" Im5End: Im6: IncludeBinary "cross.png" Im6End: EndDataSection </plaintext> </div><br><br><br><br> <img src="img/lin.jpg" width="700" height="20" alt="Уроки PureBasic"><br><br><br> </div> </div> <!-- copyright (t4) --><div align="center">Используются технологии <a href="http://www.ucoz.ru/" title="Создать сайт бесплатно"><b>uCoz</b></a><br /></div><!-- /copyright --> </body> </html>