Уроки PureBasic

Categories

Other Sites

Other Sites



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

     

                


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



Пример графического меню 2

Уроки PureBasic

Создадим графическое меню :


Для версии PureBasic 4.30
Библиотеки :
Droopy_Library_4.30
PBOSL_4.30
PureCOLOR_430

Уроки PureBasic


Скачать исходник

Уроки PureBasic

1. Создадим окно, в качестве флага укажем параметры :

#PB_Window_BorderLess - окно без рамки
#PB_Window_ScreenCentered - окно по центру

В главном цикле Repeat ничего пока не задаем (Окно мы не можем закрыть пока)


Enumeration
#Window_0
EndEnumeration

OpenWindow(#Window_0, 100, 100, 400, 250, "Заголовок", #PB_Window_BorderLess| #PB_Window_ScreenCentered)

Repeat
Event=WaitWindowEvent()

ForEver


2. Добавляем в наш код, код фона окна.


Enumeration
#Window_0
#fon
EndEnumeration

UsePNGImageDecoder()

DataSection
Im:
IncludeBinary "fon_2.png"
ImEnd:
EndDataSection

CatchImage(#fon, ?Im, ?ImEnd-?Im)


OpenWindow(#Window_0, 100, 100, 400, 250, "Заголовок", #PB_Window_BorderLess| #PB_Window_ScreenCentered)

BackgroundImage_Window_0_Brush = CreatePatternBrush_(ImageID(#fon)) ; надевание фона на окно
If BackgroundImage_Window_0_Brush
SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, BackgroundImage_Window_0_Brush)
RedrawWindow_(WindowID(0), 0, 0, #RDW_ERASE | #RDW_FRAME | #RDW_INVALIDATE | #RDW_ALLCHILDREN)
EndIf


Repeat
Event=WaitWindowEvent()

ForEver


3. Прописываем ссылки.
Особенность ссылок в том, что по умолчанию при наведении на них курсора мыши, курсор меняет форму на курсор рука.
Наши ссылки по умолчанию имеют системный фон.

Уроки PureBasic


Enumeration
#Window_0
#fon
EndEnumeration
UsePNGImageDecoder()

DataSection
Im:
IncludeBinary "fon_2.png"
ImEnd:
EndDataSection

CatchImage(#fon, ?Im, ?ImEnd-?Im)

OpenWindow(#Window_0, 100, 100, 400, 250, "Заголовок", #PB_Window_BorderLess| #PB_Window_ScreenCentered)

HyperLinkGadget(1, 25, 30, 70, 15, "Меню 1", $5C011E )
HyperLinkGadget(2, 25, 50, 70, 15, "Меню 2", $5C011E )
HyperLinkGadget(3, 25, 70, 70, 15, "Меню 3", $5C011E )
HyperLinkGadget(4, 25, 90, 70, 15, "Меню 4", $5C011E )
HyperLinkGadget(5, 25, 110, 70, 15, "Меню 5", $5C011E )
HyperLinkGadget(6, 320, 10, 70, 15, "Закрыть", $0002FF )

BackgroundImage_Window_0_Brush = CreatePatternBrush_(ImageID(#fon)) ; надевание фона на окно
If BackgroundImage_Window_0_Brush
SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, BackgroundImage_Window_0_Brush)
RedrawWindow_(WindowID(0), 0, 0, #RDW_ERASE | #RDW_FRAME | #RDW_INVALIDATE | #RDW_ALLCHILDREN)
EndIf

Repeat
Event=WaitWindowEvent()

ForEver



4. Задаем цвет ссылок, прозрачный фон, шрифт и размер.

Шрифт и размер удобно задать через редактор PureFORM

Уроки PureBasic


Создаём цикл от 0 до 5 (для шести ссылок)

Enumeration
#Window_0
#fon
#Font_HyperLink_0
EndEnumeration
UsePNGImageDecoder()

DataSection
Im:
IncludeBinary "fon_2.png"
ImEnd:
EndDataSection

CatchImage(#fon, ?Im, ?ImEnd-?Im)

OpenWindow(#Window_0, 100, 100, 400, 250, "Заголовок", #PB_Window_BorderLess| #PB_Window_ScreenCentered)

HyperLinkGadget(1, 25, 30, 70, 15, "Меню 1", $5C011E )
HyperLinkGadget(2, 25, 50, 70, 15, "Меню 2", $5C011E )
HyperLinkGadget(3, 25, 70, 70, 15, "Меню 3", $5C011E )
HyperLinkGadget(4, 25, 90, 70, 15, "Меню 4", $5C011E )
HyperLinkGadget(5, 25, 110, 70, 15, "Меню 5", $5C011E )
HyperLinkGadget(6, 320, 10, 70, 15, "Закрыть", $0002FF )

For a=0 To 5
SetGadgetFont(a + 1, LoadFont(#Font_HyperLink_0, "Microsoft Sans Serif", 10, 272)) ; задаём шрифт и размер PureCOLOR_SetGadgetColor(a + 1, #PureCOLOR_SystemColor, #PureCOLOR_DontSetBackColor) ; цвет фона ссылки SetGadgetColor(a + 1, #PB_Gadget_FrontColor, $ffffff) ; цвет ссылки
Next a

BackgroundImage_Window_0_Brush = CreatePatternBrush_(ImageID(#fon)) ; надевание фона на окно
If BackgroundImage_Window_0_Brush
SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, BackgroundImage_Window_0_Brush)
RedrawWindow_(WindowID(0), 0, 0, #RDW_ERASE | #RDW_FRAME | #RDW_INVALIDATE | #RDW_ALLCHILDREN)
EndIf

Repeat
Event=WaitWindowEvent()

ForEver



5.Добавляем действия на кнопки ( Закрыть наше окно, открыть окно "о программе"...)

Enumeration
#Window_0
#Window_1
#Window_2

#fon
#Font_HyperLink_0
#o_pr
EndEnumeration
UsePNGImageDecoder()

DataSection
Im:
IncludeBinary "fon_2.png"
ImEnd:
Im1:
IncludeBinary "o_pragrame.png"
Im1End:
EndDataSection

CatchImage(#fon, ?Im, ?ImEnd-?Im)
CatchImage(#o_pr, ?Im1, ?Im1End-?Im1)

OpenWindow(#Window_0, 100, 100, 400, 250, "Заголовок", #PB_Window_BorderLess| #PB_Window_ScreenCentered)
HyperLinkGadget(1, 25, 30, 70, 15, "Меню 1", $5C011E )
HyperLinkGadget(2, 25, 50, 70, 15, "Меню 2", $5C011E )
HyperLinkGadget(3, 25, 70, 70, 15, "Меню 3", $5C011E )
HyperLinkGadget(4, 25, 90, 70, 15, "Меню 4", $5C011E )
HyperLinkGadget(5, 25, 110, 70, 15, "Меню 5", $5C011E )
HyperLinkGadget(6, 320, 10, 70, 15, "Закрыть", $0002FF )
For a=0 To 5
SetGadgetFont(a + 1, LoadFont(#Font_HyperLink_0, "Microsoft Sans Serif", 10, 272)) ; задаём шрифт и размер
PureCOLOR_SetGadgetColor(a + 1, #PureCOLOR_SystemColor, #PureCOLOR_DontSetBackColor) ; цвет фона ссылки
SetGadgetColor(a + 1, #PB_Gadget_FrontColor, $ffffff) ; цвет ссылки
Next a

BackgroundImage_Window_0_Brush = CreatePatternBrush_(ImageID(#fon)) ; надевание фона на окно
If BackgroundImage_Window_0_Brush
SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, BackgroundImage_Window_0_Brush)
RedrawWindow_(WindowID(0), 0, 0, #RDW_ERASE | #RDW_FRAME | #RDW_INVALIDATE | #RDW_ALLCHILDREN)
EndIf

Repeat
Event=WaitWindowEvent()
Gadget=EventGadget()
Window=EventWindow()

If Event=#PB_Event_Gadget And Gadget= 1
OpenWindow(#Window_1, 0, 0, 200, 200, "О программе", #PB_Window_ScreenCentered|#PB_Window_SystemMenu )
ImageGadget(8, 0, 0, 200, 200, ImageID(#o_pr))

EndIf
If
Event=#PB_Event_Gadget And Gadget= 2
OpenWindow(#Window_2, 110, 110, 300, 300, "О программе",#PB_Window_SystemMenu )
EndIf
If
Event=#PB_Event_CloseWindow
CloseWindow(Window) ; закрываем под окно.
EndIf
If
Event=#PB_Event_Gadget And Gadget=6
Break ; Прерываем главный цикл
EndIf

ForEver



6.Озвучивание кнопок при наведении на них курсора мыши

Enumeration
#Window_0
#Window_1
#Window_2
#fon
#Font_HyperLink_0
#o_pr
EndEnumeration

UsePNGImageDecoder()
InitSound() ; Инициализация музыкальной библиотеки
UseOGGSoundDecoder() ; Подключение плагина для чтения OGG файлов с музыкой

CatchSound(0,?IB1,?IB2-?IB1) ; Загрузка музыки из исполняемого файла
CatchSound(1,?IB3,?IB4-?IB3) ; Загрузка музыки из исполняемого файла

Procedure IsMouseOver(wnd) ; Эта процедура определяет находится ли курсор мышки над заданным окном или гаджетом
GetWindowRect_(wnd,re.RECT)
GetCursorPos_(pt.POINT)
Result.l = PtInRect_(@re, pt\x | (pt\y<<32) )
ProcedureReturn Result
EndProcedure

DataSection
Im:
IncludeBinary "fon_2.png"
ImEnd:
Im1:
IncludeBinary "o_pragrame.png"
Im1End:
EndDataSection

CatchImage(#fon, ?Im, ?ImEnd-?Im)
CatchImage(#o_pr, ?Im1, ?Im1End-?Im1)

Procedure EventButton1(Event, Gadget, Type, ImageGadget) ; Обработка событий при наведении курсора на ссылку
Static Button, Buton_DOWN
If Event=#WM_MOUSEMOVE ; Переместилась мышка
If IsMouseOver(GadgetID(1)) Or IsMouseOver(GadgetID(2)) Or IsMouseOver(GadgetID(3)) Or IsMouseOver(GadgetID(4)) Or IsMouseOver(GadgetID(5)) Or IsMouseOver(GadgetID(6))
If Button=0
Button=1
PlaySound(0,0) ; Включаем озвучивание кнопки при наведении курсора
EndIf
Else

If Button=1
Button=0
EndIf
EndIf
EndIf
EndProcedure

OpenWindow(#Window_0, 100, 100, 400, 250, "Заголовок", #PB_Window_BorderLess| #PB_Window_ScreenCentered)

HyperLinkGadget(1, 25, 30, 70, 15, "Меню 1", $5C011E )
HyperLinkGadget(2, 25, 50, 70, 15, "Меню 2", $5C011E )
HyperLinkGadget(3, 25, 70, 70, 15, "Меню 3", $5C011E )
HyperLinkGadget(4, 25, 90, 70, 15, "Меню 4", $5C011E )
HyperLinkGadget(5, 25, 110, 70, 15, "Меню 5", $5C011E )
HyperLinkGadget(6, 320, 10, 70, 15, "Закрыть", $0002FF )

For a=0 To 5
SetGadgetFont(a + 1, LoadFont(#Font_HyperLink_0, "Microsoft Sans Serif", 10, 272)) ; задаём шрифт и размер
PureCOLOR_SetGadgetColor(a + 1, #PureCOLOR_SystemColor, #PureCOLOR_DontSetBackColor) ; цвет фона ссылки
SetGadgetColor(a + 1, #PB_Gadget_FrontColor, $ffffff) ; цвет ссылки
Next a


BackgroundImage_Window_0_Brush = CreatePatternBrush_(ImageID(#fon)) ; надевание фона на окно
If BackgroundImage_Window_0_Brush
SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, BackgroundImage_Window_0_Brush)
RedrawWindow_(WindowID(0), 0, 0, #RDW_ERASE | #RDW_FRAME | #RDW_INVALIDATE | #RDW_ALLCHILDREN)
EndIf

Repeat
Event=WaitWindowEvent()
Gadget=EventGadget()
Window=EventWindow()
If Event=#PB_Event_Gadget And Gadget= 1
OpenWindow(#Window_1, 0, 0, 200, 200, "О программе", #PB_Window_ScreenCentered|#PB_Window_SystemMenu )
ImageGadget(8, 0, 0, 200, 200, ImageID(#o_pr))
EndIf
If Event=#PB_Event_Gadget And Gadget= 2
OpenWindow(#Window_2, 110, 110, 300, 300, "О программе",#PB_Window_SystemMenu )
EndIf
If Event=#PB_Event_CloseWindow
CloseWindow(Window) ; закрываем под окно.
EndIf
If Event=#PB_Event_Gadget And Gadget=6
Break ; Прерываем главный цикл
EndIf
If
Event=#PB_Event_Gadget
PlaySound(1,0) ; Включаем озвучивание кнопки при нажатии
EndIf
EventButton1(Event, Gadget, Type, 1)
ForEver

DataSection
IB1:
IncludeBinary "saund/444.OGG"
IB2:
IB3:
IncludeBinary "saund/111.OGG"
IB4:
EndDataSection



Результат :

Enumeration
#Window_0
#Window_1
#Window_2
#fon
#Font_HyperLink_0
#o_pr

EndEnumeration

UsePNGImageDecoder()
InitSound() ; Инициализация музыкальной библиотеки
UseOGGSoundDecoder() ; Подключение плагина для чтения OGG файлов с музыкой

CatchSound(0,?IB1,?IB2-?IB1) ; Загрузка музыки из исполняемого файла
CatchSound(1,?IB3,?IB4-?IB3) ; Загрузка музыки из исполняемого файла

Procedure IsMouseOver(wnd) ; Эта процедура определяет находится ли курсор мышки над заданным окном или гаджетом
GetWindowRect_(wnd,re.RECT)
GetCursorPos_(pt.POINT)
Result.l = PtInRect_(@re, pt\x | (pt\y<<32) )
ProcedureReturn Result
EndProcedure

DataSection
Im:
IncludeBinary "fon_2.png"
ImEnd:
Im1:
IncludeBinary "o_pragrame.png"
Im1End:
EndDataSection

CatchImage(#fon, ?Im, ?ImEnd-?Im)
CatchImage(#o_pr, ?Im1, ?Im1End-?Im1)

Procedure EventButton1(Event, Gadget, Type, ImageGadget) ; Обработка событий при наведении курсора на ссылку
Static Button, Buton_DOWN
If Event=#WM_MOUSEMOVE ; Переместилась мышка
If IsMouseOver(GadgetID(1)) Or IsMouseOver(GadgetID(2)) Or IsMouseOver(GadgetID(3)) Or IsMouseOver(GadgetID(4)) Or IsMouseOver(GadgetID(5)) Or IsMouseOver(GadgetID(6))
If Button=0
Button=1
PlaySound(0,0) ; Включаем озвучивание кнопки при наведении курсора
EndIf
Else

If Button=1
Button=0
EndIf
EndIf
EndIf
EndProcedure

OpenWindow(#Window_0, 100, 100, 400, 250, "Заголовок", #PB_Window_BorderLess| #PB_Window_ScreenCentered)

HyperLinkGadget(1, 25, 30, 70, 15, "Меню 1", $5C011E )
HyperLinkGadget(2, 25, 50, 70, 15, "Меню 2", $5C011E )
HyperLinkGadget(3, 25, 70, 70, 15, "Меню 3", $5C011E )
HyperLinkGadget(4, 25, 90, 70, 15, "Меню 4", $5C011E )
HyperLinkGadget(5, 25, 110, 70, 15, "Меню 5", $5C011E )
HyperLinkGadget(6, 320, 10, 70, 15, "Закрыть", $0002FF )

For a=0 To 5
SetGadgetFont(a + 1, LoadFont(#Font_HyperLink_0, "Microsoft Sans Serif", 10, 272)) ; задаём шрифт и размер
PureCOLOR_SetGadgetColor(a + 1, #PureCOLOR_SystemColor, #PureCOLOR_DontSetBackColor) ; цвет фона ссылки
SetGadgetColor(a + 1, #PB_Gadget_FrontColor, $ffffff) ; цвет ссылки
Next a


BackgroundImage_Window_0_Brush = CreatePatternBrush_(ImageID(#fon)) ; надевание фона на окно
If BackgroundImage_Window_0_Brush
SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, BackgroundImage_Window_0_Brush)
RedrawWindow_(WindowID(0), 0, 0, #RDW_ERASE | #RDW_FRAME | #RDW_INVALIDATE | #RDW_ALLCHILDREN)
EndIf

Repeat
Event=WaitWindowEvent()
Gadget=EventGadget()
Window=EventWindow()
If Event=#PB_Event_Gadget And Gadget= 1
OpenWindow(#Window_1, 0, 0, 200, 200, "О программе", #PB_Window_ScreenCentered|#PB_Window_SystemMenu )
ImageGadget(8, 0, 0, 200, 200, ImageID(#o_pr))
EndIf
If
Event=#PB_Event_Gadget And Gadget= 2
OpenWindow(#Window_2, 110, 110, 300, 300, "О программе",#PB_Window_SystemMenu )
EndIf
I
f Event=#PB_Event_CloseWindow
CloseWindow(Window) ; закрываем под окно.
EndIf
If
Event=#PB_Event_Gadget And Gadget=6
Break ; Прерываем главный цикл
EndIf
If
Event=#PB_Event_Gadget
PlaySound(1,0) ; Включаем озвучивание кнопки при нажатии
EndIf
EventButton1(Event, Gadget, Type, 1)
ForEver

DataSection
IB1:
IncludeBinary "saund/444.OGG"
IB2:
IB3:
IncludeBinary "saund/111.OGG"
IB4:
EndDataSection



 

Используются технологии uCoz