FreeBasic
Главная
Вход
Регистрация
Суббота, 20.04.2024, 00:10Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Библиотеки для FreeBasic » Библиотека Window9 для Freebasic » Маленький фикс библиотеки (Маленький фикс библиотеки)
Маленький фикс библиотеки
haavДата: Четверг, 21.02.2013, 20:01 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Маленький фикс библиотеки




Маленькое незапланированное обновление. Так получилось, что я смешал в архивах с исходным кодом старые и новые файлы. В итоге хоть компиляция и выполнялась нормально, но были ошибки в использовании функций. На оф. форуме мне об этом написали и поскольку это серьезное упущение, решил выпустить исправление. Ничего не добавлено.

Исправлено:

1) Удалены ненужные файлы
2) Исправлена функция WindowStartDraw (некорректное выполнение на Windows XP).
3) Исправлена функция GadgetY
4) Улучшена функция ColorRequester без потери совместимости (спасибо Jonge за совет)
Прикрепления: 0730266.jpeg (92.1 Kb)


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
HristoДата: Среда, 03.04.2013, 02:40 | Сообщение # 2
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
Как включить/выключить курсор мышь?
...
   ResMouse = SetMouse(,,0)  ' не работает.
   MovieFullScreen(Mov, -1)
...
 
haavДата: Среда, 03.04.2013, 10:05 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Привет Hristo!

Интерфейс DirectShow имеет метод HideCursor. По идее он должен выполнять эту функцию,  но не работает. Точнее он работает только в оконном режиме, но в полноэкранном нет.  Microsoft разработала DirectShow очень глючным и исправлять не желает. Есть еще один баг, который я нашел в DirectShow: При использовании в качестве  родителя  для окна MOVIE любого окна, кроме Desktop, функция  MovieFullScreen (интерфейс IVideoWindow_put_FullScreenMode) работает неправильно:

Переключаясь в полноэкранный режим - все нормально
Но переключившись обратно - видим черный экран и звук.

Однако я могу предложить такой код видеоплеера, может вам поможет:

Код
#Include "window9.bi"

Dim Shared As Integer event,mov8,MOV_FLAG,full, DesktopHeight,DesktopWidth,FlagFull=0
Dim Shared As HWND  hwnd
Dim As String Setting=GetCurrentSettingsDisplay
If Setting<>"" Then
        DesktopWidth = GetWidthDesktop(Setting)
        DesktopHeight = GetHeightDesktop(Setting)
EndIf
hwnd=OpenWindow("Video",10,10,350,350) : CenterWindow(hwnd)
ButtonGadget(1,10,280,20,20,"X"):GadgetToolTip(1,"STOP")
ButtonGadget(2,40,280,20,20,"|>"):GadgetToolTip(2,"PLAY")
ButtonGadget(3,70,280,20,20,"||"):GadgetToolTip(3,"PAUSE")
ButtonGadget(6,100,280,20,20,"<<"):GadgetToolTip(6,"Playback speed")
ButtonGadget(7,130,280,20,20,">>"):GadgetToolTip(7,"Increase the playback speed")
ButtonGadget(8,160,280,20,20,"+"):GadgetToolTip(8,"Open File")
ImageGadget(4,6,0,320,240)
TrackBarGadget(5,5,250,320,20,0,10,TBS_NOTICKS  )

Sub resize
        Static As Integer Width_,height
        If  Width_<>WindowWidth(hwnd) Or height<>WindowHeight(hwnd)-110 Then
            Width_=WindowWidth(hwnd) : height=WindowHeight(hwnd)-110

            If MOV_FLAG=1 And FlagFull = -1 Then
                ResizeMovie(mov8,0,0,DesktopWidth,DesktopHeight)
                ResizeGadget(4,0,0,DesktopWidth,DesktopHeight)
            ElseIf MOV_FLAG=1 Then
                ResizeGadget(4,0,0,Width_,height)
                ResizeMovie(mov8,0,0,width_,height)
            Else
                ResizeGadget(4,,,Width_,height)
            EndIf
            Var resH=WindowHeight(hwnd)-70
            ResizeGadget(1,,resH)
            ResizeGadget(2,,resH)
            ResizeGadget(3,,resH)
            ResizeGadget(5,,resH-30,width_-30)
            ResizeGadget(6,,resH)
            ResizeGadget(7,,resH)
            ResizeGadget(8,,resH)
        EndIf
        If MOV_FLAG=1 Then
            SetTrackBarPos(5,Int(MovieGetCurrentPosition(mov8)/1000000))
        EndIf
End Sub
SetTimer(hwnd,1,10,Cast(TIMERPROC,@resize))
Do
        event=WindowEvent()
        Sleep(1)
        If Event=EventClose Then Exit Do
        If event=EventGadget Then
            Select Case EventNumber
                Case 1 : If mov8 Then StopMovie(mov8)
                Case 2 : If mov8 Then PlayMovie(mov8):SetRateMovie(mov8,1)
                Case 3 : If mov8 Then PauseMovie(mov8)
                Case 5
                    If GetAsyncKeyState(1)<0 Then
                        If mov8 Then
                            MovieSetPositions(mov8,Cast(Double,GetTrackBarPos(5))*1000000,GetEndPosMovie(mov8) )
                        EndIf
                    EndIf
                Case 6 : If mov8 Then SetRateMovie(mov8,GetRateMovie(mov8)-0.5)
                Case 7 : If mov8 Then SetRateMovie(mov8,GetRateMovie(mov8)+0.5)
                Case 8
                    Var OFR = OpenFileRequester("","C:\Users\haav-stabud\Desktop\","Media files (*.avi, *.mp3, *.wmv, *.wav, *.mp4, *.mp2, *.mp1)"+Chr(0)+"*.avi; *.mp3; *.wmv; *.wav; *.mp4; *.mp2; *.mp1"+Chr(0))
                    If OFR<>"" Then
                        If mov8 Then
                            FreeMovie(mov8)
                        EndIf
                        mov8=LoadMovie(GadgetID(4),OFR,0,0,WindowWidth(hwnd)-30,WindowHeight(hwnd)-110)
                        SetTrackBarMaxPos(5,Int(GetEndPosMovie(mov8)/1000000 ))
                        PlayMovie(mov8):SetRateMovie(mov8,1)
                        MOV_FLAG=1
                    EndIf
            End Select
        EndIf
        If GetAsyncKeyState(&h20)<0 Then
            If FlagFull = 0 Then
                SetWindowStyle(hwnd,WS_VISIBLE Or WS_POPUP)
                ResizeWindow(hwnd,0,0,DesktopWidth,DesktopHeight+40)
                ResizeGadget(GadgetID(4),0,0,DesktopWidth,DesktopHeight)
                FlagFull = -1
                Sleep(300)
            Else
                SetWindowStyle(hwnd,WS_VISIBLE Or WS_OVERLAPPEDWINDOW )
                ResizeWindow(hwnd,0,0,350,350)
                CenterWindow(hwnd)
                FlagFull = 0
                Sleep(300)
            EndIf
        EndIf
Loop
If mov8 Then FreeMovie(mov8)

переключение в полноэкранный режим и обратно: клавиша SPACE


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
HristoДата: Среда, 14.08.2013, 02:38 | Сообщение # 4
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
Event=WaitEvent() ' Выключает курсор мышь! (WinXP SP3)
 ' Но не работает:  
  IF Event=EventLBUp then MovieFullScreen(Mov,0):Exit Do ' И подобное...
 
Форум » Библиотеки для FreeBasic » Библиотека Window9 для Freebasic » Маленький фикс библиотеки (Маленький фикс библиотеки)
  • Страница 1 из 1
  • 1
Поиск: