Мне пришла в голову идея создать программу для просмотра изображений и прослушивания музыки, использую Drag&Drop. Программа будет работать таким образом: перетаскиваешь из проводника картинку, программа тебе ее открывает. Если перетаскиваешь музыку, то программа тебе ее воспроизводит. естественно, надо реализовать функции "Стоп", "Пауза", "Продолжить", "Уменьшить/Увеличить звук". Можно будет просматривать изображения и слушать музыку одновременно. Возможно, потом улучшу программу для просмотра видео или другого формата файлов. Итак, начнем..
Подключаем несколько библиотек:
jpeg, pngimage, Gifimg для просмотра изображений соответствующий форматов.
shellapi
bass для работы с музыкой
Интересное свойство GlassFrame. Делает наше окно "стеклянным". В нем ставим Enabled True и GlassSheet True.
Вот интересный кусок кода для того, чтобы убрать кнопки "минимизировать" и "на весь экран":
var
l: DWORD;
begin
l := GetWindowLong(Self.Handle, GWL_STYLE);
l := l and not (WS_MINIMIZEBOX);
l := l and not (WS_MAXIMIZEBOX);
l := SetWindowLong(Self.Handle, GWL_STYLE, l);
end;
В FormCreate пишем:
DragAcceptFiles(Handle,True); //Разрешает перетаскивание файлов
В FormDestroy
DragAcceptFiles(Handle,false); //Запрещает перетаскивание файлов
Вот код для распознавания форматов:
for I := length(namee) downto 1 do
if namee[i]='.' then ras:=copy(namee,i+1,length(namee)); .//в переменной namee полный путь к файлу
Вот процедура, перелавливающая перетаскивание файлов:
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
audio:=bass_streamcreatefile(false,p,0,0,bass_unicode); //audio глобальная переменная типа Dword
bass_channelplay(audio,false); //Воспроизвести BASS_ChannelSetAttribute(audio,BASS_ATTRIB_VOL, 0.6); //Установить звук в 60 %
BASS_ChannelPause(audio); //Пауза
Библиотека Bass (кинуть к файлу)
Подключаем несколько библиотек:
jpeg, pngimage, Gifimg для просмотра изображений соответствующий форматов.
shellapi
bass для работы с музыкой
Интересное свойство GlassFrame. Делает наше окно "стеклянным". В нем ставим Enabled True и GlassSheet True.
Вот интересный кусок кода для того, чтобы убрать кнопки "минимизировать" и "на весь экран":
var
l: DWORD;
begin
l := GetWindowLong(Self.Handle, GWL_STYLE);
l := l and not (WS_MINIMIZEBOX);
l := l and not (WS_MAXIMIZEBOX);
l := SetWindowLong(Self.Handle, GWL_STYLE, l);
end;
В FormCreate пишем:
DragAcceptFiles(Handle,True); //Разрешает перетаскивание файлов
В FormDestroy
DragAcceptFiles(Handle,false); //Запрещает перетаскивание файлов
Вот код для распознавания форматов:
for I := length(namee) downto 1 do
if namee[i]='.' then ras:=copy(namee,i+1,length(namee)); .//в переменной namee полный путь к файлу
Вот процедура, перелавливающая перетаскивание файлов:
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
procedure TForm4.WMDropFiles(var Msg: TWMDropFiles);
var
la,tx: pchar;
i: integer; //Для подсчета цифор с конфа для расширения
ras, namee: string; //расширение и имя файла
begin
if dragqueryfile(msg.Drop,0,dragfile,max_path) > 0 then //Если файл перенесли
begin
la:=dragfile;
namee:=dragfile;
for I := length(namee) downto 1 do
if namee[i]='.' then ras:=copy(namee,i+1,length(namee));
if (ras='jpg')or(ras='gif')or(ras='png')or(ras='jpeg') then
LoadImage(namee)
else begin
if ras='mp3' then
LoadMusic(la)
else
begin
tx:= Pchar('Формат не подходит');
application.MessageBox(tx,PWideChar(ras),MB_ICONWARNING+MB_OK);
end;
end;
end;
end;
Теперь функции для воспроизведения звука:audio:=bass_streamcreatefile(false,p,0,0,bass_unicode); //audio глобальная переменная типа Dword
bass_channelplay(audio,false); //Воспроизвести BASS_ChannelSetAttribute(audio,BASS_ATTRIB_VOL, 0.6); //Установить звук в 60 %
BASS_ChannelPause(audio); //Пауза
Библиотека Bass (кинуть к файлу)
Комментариев нет:
Отправить комментарий