Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
ohotnikr
0 / 0 / 0
Регистрация: 18.09.2018
Сообщений: 9
1

Музыка в билдере

24.12.2018, 23:22. Просмотров 985. Ответов 3

Нужно в начале каждого часа, чтобы появлялась "кукушка" и издавала характерный звук(часть кода, где восклицательные знаки). Но то таймер останавливается и прога зависает,то выдает ошибку "Project Project1.exe raised exception class EMCIDeviceError with message 'No MCI Device Open'"
Помогите, пожалуйста

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include "math.h"
#include "Unit1.h"
#include "DateUtils.hpp"
#include "conio.h"
#include <jpeg.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
double x0, y0, a, b, a_minute,b_minute,a_hour,b_hour;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Width = 700;
Height = 600;
x0 = ClientWidth/2, y0 = ClientHeight/2;
 // во время выполнения программы не использовать другие кнопки
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Caption = "Second" + (String)SecondOf(Now());
    Image1->Hide();
    Canvas->Pen->Width = 4;
    Canvas->Pen->Color =clYellow;
    Canvas->Brush->Color = clScrollBar;
    Canvas->Ellipse(x0 - 200, y0 - 200,x0 + 200, y0 + 200);
    Canvas->Brush->Color = clBtnShadow;
    Canvas->Ellipse(x0 - 3, y0 - 3,x0 + 2, y0 + 2);
   
 
    a = cos((SecondOf(Now())*6 - 90)*M_PI/(180));  //MinuteOf(Now
    b = sin((SecondOf(Now())*6 - 90)*M_PI/(180));
    a_minute = cos((MinuteOf(Now())*6 - 90)*M_PI/(180));
    b_minute = sin((MinuteOf(Now())*6 - 90)*M_PI/(180));
 
    a_hour = cos((MinuteOf(Now())*0.6 + HourOf(Now())*30 - 90)*M_PI/(180));  //MinuteOf(Now
    b_hour = sin((MinuteOf(Now())*0.6 + HourOf(Now())*30 - 90)*M_PI/(180));
    Canvas->Brush->Color = clScrollBar;
    Canvas->Font->Name = "Palace Script MT";
    Canvas->Font->Height=50;
    Canvas->TextOut(x0 - 25/* - Canvas->TextWidth("10")/2*/, y0 - 180, "12");
    Canvas->TextOut(x0 /*- Canvas->TextWidth("10")/2*/ - 180, y0 - 25, "9");
    Canvas->TextOut(x0 - 10/*- Canvas->TextWidth("10")/2*/, y0 + 145, "6");
    Canvas->TextOut(x0 /*- Canvas->TextWidth("10")/2*/ + 160, y0 - 25, "3");
 
    Canvas->Pen->Width = 3;
    Canvas->Pen->Color = clRed;
    Canvas->MoveTo(x0 - a*15, y0 - b*15);
    Canvas->LineTo(x0 + a*180, y0 + b*190);
    Canvas->Pen->Width = 4;
    Canvas->Pen->Color = clBlue;
    Canvas->MoveTo(x0 - a_minute*15, y0 - b_minute*15);
    Canvas->LineTo(x0 + a_minute*170, y0 + b_minute*170);
    Canvas->Pen->Width = 6;
    Canvas->Pen->Color = clBlack;
    Canvas->MoveTo(x0 - a_hour*15, y0 - b_hour*15);
    Canvas->LineTo(x0 + a_hour*120, y0 + b_hour*120);
     if(MinuteOf(Now())== 0 && SecondOf(Now())==0 ){
     Image1->Show();
   // MediaPlayer1->Stop();  !!!
   // MediaPlayer1->Close();   !!
    //MediaPlayer2->Open();  !!
    //MediaPlayer2->Play();
    }
    if (SecondOf(Now())==3)
    Image1->Hide();
    }
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if(Key == 13)
       {
     Timer1->Enabled = true;
     }
     MediaPlayer1->FileName = "zvuk-chasov.mp3";
     MediaPlayer1->Open();
     MediaPlayer1->Play();
     MediaPlayer1->Notify=true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::MediaPlayer1Notify(TObject *Sender)
{
MediaPlayer1->Play();
}
//---------------------------------------------------------------------------
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2018, 23:22
Ответы с готовыми решениями:

Macro's в билдере!
Здрава всем! Вот опять я со своими вопросамы ;) ! Ну вот я в ХЕ билдере нашел такую кнопку...

Классы в билдере
КаК в билдере инициализировать класс и как потом из него достать нужную переменную или функцыю?...

Тест в Билдере
Здравствуйте,заранее прошу прощение если делаю что то не так. Новичок на форуме.Делаю диплом.Нужно...

графики в билдере
Други форумчане, что посоветуете использовать для построения графиков в билдере?

3
alkl
117 / 92 / 35
Регистрация: 18.12.2012
Сообщений: 640
Завершенные тесты: 1
25.12.2018, 00:11 2
Вот смотрю я на код обработчика таймера, а там какие-то канвы, косинусы, синусы, ... Но ни строчки о звуке.
Предлагаете разбираться в этой простыне ?
Уберите всё лишнее, некасающееся проблемы. Проверьте этот код и, если будут проблемы, выложите его сюда, с описанием проблемы.
0
gunslinger
случайный прохожий
1483 / 965 / 371
Регистрация: 20.07.2013
Сообщений: 2,816
25.12.2018, 19:11 3
Лучший ответ Сообщение было отмечено ohotnikr как решение

Решение

Зачем MediaPlayer1->Close() ?
Должно быть достаточно (даже MediaPlayer1->Stop() вроде не требуется)
C++
1
2
3
  MediaPlayer1->FileName = "zvuk-chasov.mp3";
  MediaPlayer1->Open();
  MediaPlayer1->Play();
1
ohotnikr
0 / 0 / 0
Регистрация: 18.09.2018
Сообщений: 9
25.12.2018, 20:10  [ТС] 4
Спасибо,
C++
1
2
3
4
5
if(MinuteOf(Now())== 9 && SecondOf(Now())==1 ){
     Image1->Show();
    MediaPlayer2->Open();
   MediaPlayer2->Play();
    }
0
25.12.2018, 20:10
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2018, 20:10

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Отчет в Билдере
У меня в программе нужно печатать отчет данных с stringgrid-а и еще нескольких edit-ов. Нужно что...

Графика в билдере
есть программа,в ней нужно распознавать фотки,как можно сделать так что бы программа распознавала...

Строки в СИ++ Билдере
UnitHalt.cpp(32): E2285 Could not find a match for 'operator UnicodeString::=(TStrings)' Full...

Срезы в билдере
Здравствуйте. Нужна Ваша помощь. Есть код программы void __fastcall TForm1::Button2Click(TObject...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.