С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
1

drag and drop плей листа (bass.dll)

12.05.2012, 22:10. Показов 3147. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть код воспроизведения,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <vcl.h>
#include "bass.h"
#pragma hdrstop
 
#include "Unit2_player.h"
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
HSAMPLE samp;
HSTREAM chan;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
 AnsiString b="C:\\olololo.mp3";
char *a=b.c_str();
chan=BASS_StreamCreateFile(FALSE, a, 0, 0, 0);
 
BASS_ChannelPlay(chan,FALSE);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::FormCreate(TObject *Sender)
{
 BASS_Init( -1,44100, BASS_DEVICE_3D,0,NULL);
}
Как при помощи события drag and drop у формы, создать так называемый плей лист, и дальнейшее воспроизведение его как поток
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2012, 22:10
Ответы с готовыми решениями:

Куда закинуть bass.dll,bass.h,bass.lib
Ребят, пересмотрел темы на форуме, гуглил, толком ничего не нашел. Собственно такая проблема, вот я...

Плей Лист на Delphi с bass.dll неполучаеться
Народ всем привет) и с праздником ! у меня таое дело : Я пишу мр3 проигрыватель с bass.dll и у меня...

Bass.dll.net - Ошибка инициализации при обращении к Bass.dll
Создаю тестовое консольное приложение в точности по гайду:...

Где взять bass.dll bass.lib for win64
Приветствую. Тут много тем было на эти вопросы , но ответа не нашел. Где можно и вообще есть ли...

38
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.05.2012, 22:56 2
Что собой представляет плей лист в данном случае и куда нужно его драгать & дрыгать?
0
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
13.05.2012, 16:12  [ТС] 3
Да суть в том, что выделяешь несколько композиций и перетаскиваешь непосредственно в проигрыватель. И они заносились в ListBox

Добавлено через 32 секунды
И как вообще создается плей лист? каким образом он проигрывается?

Добавлено через 4 часа 31 минуту
nobody can help me %(

Добавлено через 2 часа 38 минут
.............
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2012, 17:18 4
выделяешь несколько композиций
в чем это ты выделяешь?
0
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
13.05.2012, 17:25  [ТС] 5
Вот сидишь ты на стуле, в руке у тебя мышь, ты зажимаешь левую клавишу и выделяешь треки в папке, и не отпуская клавишу, ты перетаскиваешь их на форму, после чего они заносятся в list box. так понятно?
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2012, 17:30 6
Так это перетаскивание файлов на форму
.h
C++
1
2
3
4
5
    void __fastcall WMDROPFILES(TMessage&);// Обработчик перетаскивания файлов
 
    BEGIN_MESSAGE_MAP
      MESSAGE_HANDLER(WM_DROPFILES,TMessage,WMDROPFILES);    // Сообщение о перетаскивании файлов
    END_MESSAGE_MAP(TComponent);
.cpp
C++
1
2
// Вкл перетаскивание
DragAcceptFiles(Handle, True);
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//------------------------ Перетаскивание файлов -------------------------------
void __fastcall TFMyDeskTop::WMDROPFILES(TMessage &Msg)
{
char chFileName[256];
int Count;
Count = DragQueryFile((void*) Msg.WParam, 0xFFFFFFFF,chFileName,sizeof(chFileName)); // число перетащенных файлов
 
for (int i=0;i<Count;i++)//цикл по файлам
  {
   DragQueryFile((void*)Msg.WParam,i,chFileName,sizeof(chFileName)); // запрос имени файла
   // ЧитоТо
  }
DragFinish((void*)Msg.WParam); // завершение перетаскивания
}
//---------------------------------------------------------------------------
C++
1
2
// Выкл перетаскивание
DragAcceptFiles(Handle, False);
2
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
13.05.2012, 22:27  [ТС] 7
А как перетаскиваемые файлы занести в лист бокс?
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2012, 22:33 8
C++
1
2
3
4
5
6
for (int i=0;i<Count;i++)//цикл по файлам
  {
   DragQueryFile((void*)Msg.WParam,i,chFileName,sizeof(chFileName)); // запрос имени файла
   ListBox1->Items->Add(chFileName);
  // Чито-То ИчО 
  }
1
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
13.05.2012, 22:43  [ТС] 9
Цитата Сообщение от Avazart Посмотреть сообщение
TFMyDeskTop::WMDROPFILES(TMessage &Msg)
это кокое-то событие? или вручную писать?
Ах, все допетрил, спасибо вам большое!


[BCC32 Error] Unit2_player.cpp(59): E2090 Qualifier 'TFMyDeskTop' is not a class or namespace name
[BCC32 Error] Unit2_player.cpp(59): E2040 Declaration terminated incorrectly
Выдает(
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2012, 22:59 10
C++
1
TFMyDeskTop::WMDROPFILES(TMessage &Msg)
Копипастил с моей программы, 'TFMyDeskTop-' это форма
0
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
13.05.2012, 23:08  [ТС] 11
Да, понял что это форма, вот только меняя ее на мою (Form2) у меня 16 ошибок а так всего 2 )))

Добавлено через 18 секунд
Хотя....

Добавлено через 1 минуту
bcc32 command line for "Unit2_player.cpp"
c:\program files\embarcadero\rad studio\9.0\bin\bcc32.exe -D_DEBUG -D_RTLDLL;USEPACKAGES -n.\Win32\Debug -I"c:\program files\embarcadero\rad
studio\9.0\include\windows\vcl";Win32\Debug;"C:\Program Files\Embarcadero\RAD Studio\9.0\include\boost_1_39\boost\tr1\tr1";"C:\Program
Files\Embarcadero\RAD Studio\9.0\include\boost_1_39";"c:\program files\embarcadero\rad studio\9.0\include";"c:\program files\embarcadero\rad
studio\9.0\include\dinkumware";"c:\program files\embarcadero\rad studio\9.0\include\windows\crtl";"c:\program files\embarcadero\rad
studio\9.0\include\windows\sdk";"c:\program files\embarcadero\rad studio\9.0\include\windows\rtl";"c:\program files\embarcadero\rad
studio\9.0\include\windows\vcl";"C:\Program Files\FastReports\LibD16";"c:\program files\embarcadero\rad studio\9.0\RaveReports\Lib";"C:\Program
Files\Raize\CS5\Lib\RS-XE2\Win32" -y -Q -k -r- -c -tM -tU -tW -C8 -o.\Win32\Debug\Unit2_player.obj -w-par -Od -v -vi-
-H=.\Win32\Debug\Project1_player.pch -H Unit2_player.cpp
[BCC32 Warning] W8123 Path 'c:\program files\embarcadero\rad studio\9.0\RaveReports\Lib' not found - path ignored in option '-I'
[BCC32 Error] Unit2_player.cpp(63): E2034 Cannot convert 'void *' to 'HDROP__ *'
Full parser context
Unit2_player.cpp(60): parsing: void _fastcall TForm2::WMDROPFILES(TMessage &)
[BCC32 Error] Unit2_player.cpp(63): E2342 Type mismatch in parameter 'hDrop' (wanted 'HDROP__ *', got 'void *')
Full parser context
Unit2_player.cpp(60): parsing: void _fastcall TForm2::WMDROPFILES(TMessage &)
[BCC32 Error] Unit2_player.cpp(67): E2034 Cannot convert 'void *' to 'HDROP__ *'
Full parser context
Unit2_player.cpp(60): parsing: void _fastcall TForm2::WMDROPFILES(TMessage &)
[BCC32 Error] Unit2_player.cpp(67): E2342 Type mismatch in parameter 'hDrop' (wanted 'HDROP__ *', got 'void *')
Full parser context
Unit2_player.cpp(60): parsing: void _fastcall TForm2::WMDROPFILES(TMessage &)
[BCC32 Error] Unit2_player.cpp(71): E2034 Cannot convert 'void *' to 'HDROP__ *'
Full parser context
Unit2_player.cpp(60): parsing: void _fastcall TForm2::WMDROPFILES(TMessage &)
[BCC32 Error] Unit2_player.cpp(71): E2342 Type mismatch in parameter 'hDrop' (wanted 'HDROP__ *', got 'void *')
Full parser context
Unit2_player.cpp(60): parsing: void _fastcall TForm2::WMDROPFILES(TMessage &)
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2012, 23:12 12
Там же я указал что надо в cpp а что надо в h-файл формы писать

Объявить сначала метод надо было в h-файле
0
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
13.05.2012, 23:18  [ТС] 13
все сделал, как сказали,

h
C++
1
2
3
4
5
    void __fastcall WMDROPFILES(TMessage&);// Обработчик перетаскивания файлов
 
    BEGIN_MESSAGE_MAP
      MESSAGE_HANDLER(WM_DROPFILES,TMessage,WMDROPFILES);    // Сообщение о перетаскивании файлов
    END_MESSAGE_MAP(TComponent);
cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm2::WMDROPFILES(TMessage &Msg)
{
char chFileName[256];
int Count;
Count = DragQueryFile((void*) Msg.WParam, 0xFFFFFFFF,chFileName,sizeof(chFileName)); // число перетащенных файлов
 
for (int i=0;i<Count;i++)//цикл по файлам
  {
   DragQueryFile((void*)Msg.WParam,i,chFileName,sizeof(chFileName)); // запрос имени файла
   ListBox1->Items->Add(chFileName);
   // ЧитоТо
  }
DragFinish((void*)Msg.WParam); // завершение перетаскивания
 
DragAcceptFiles(Handle, False);
}
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2012, 23:25 14
А
C++
1
DragAcceptFiles(Handle, True);
В FormCreate прописать?
0
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
14.05.2012, 19:34  [ТС] 15
Да, все еще раз перепроверил, все равно 8 ошибок
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.05.2012, 20:14 16
Думаю из -за версии Buildera там вроде после 2009 поменяли некоторые типы .
По этому обратись к справке и посмотри какие типы используют ф-ции.
C++
1
 DragQueryFile((void*)Msg.WParam,i,chFileName,sizeof(chFileName)); // запрос имени файла
Возможно стоит убрать (void*)
1
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
14.05.2012, 22:26  [ТС] 17
А можешь так, без драгндропа, тупо через open dialog. как загрузить файлы в лист бокс через OpenDialog ? А потом их дальнейшее воспроизведение?

Добавлено через 1 час 41 минуту
Ну наставьте человека на путь истинный
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.05.2012, 23:51 18
Посмотри в Опшенсах опендиалога МультиСелект.
0
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
15.05.2012, 14:50  [ТС] 19
Да, это понятно, вот подсказал бы ты мне, как этот выбранный список занести в листбокс
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.05.2012, 16:21 20
C++
1
2
3
4
5
6
7
8
9
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
 {
  ListBox1->Items->AddStrings(OpenDialog1->Files);// или ListBox1->Items->Assign(OpenDialog1->Files);
 }
}
//---------------------------------------------------------------------------
1
15.05.2012, 16:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2012, 16:21
Помогаю со студенческими работами здесь

[Linker Error] 'E:\Programming\C++\BASS.DLL\BASS.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
Народ, подскажите пожалуйста, из-за чего ошибку билдер выбивает?? ...

Сохранение плей листа
У меня есть код: На форме TTabControl, TListBox, TOpenDialog, и три кнопки: создать новый...

Выключение компьютера по окончании воспроизведения плей-листа Windows Media Player
Доброго времени суток! Скажите, уважаемые знатоки, можно ли создать скрипт который бы включал...

Drag drop
Нужно определить по какому именно слою щелкнул пользователь клавишей мыши, и затем этот объект...

Drag and drop
У меня есть нарисованная разметка состоящая из клеточек количеством 32 на 16. На ней в случайном...

Drag and drop
Разрабатываю практическое задание по химии, суть заключается в чем: есть картинки с определенными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru