用c++builder6.0开发小闹钟(用于提醒自己不要盯着屏幕太久)
2017-04-02 14:33
232 查看
一次在找资料时不断百度,查找各个论坛,不知不觉发现自己已经看了一个多小时了,感觉眼睛有点酸。就赶紧出去透透气,目眺远方,调节一下,舒缓眼疲劳。其实也并不是那么急的事,要是中间可以中断一下,休息一下,对眼睛是有好处的。想着自己是不是能够做些什么来提醒自己,就想到之前c++builder练习书上有一个闹钟的例子,感觉改一下来达到自己的要求。
基本要求:设想是有两个时间:专注时间和休息时间,这两个是可以设置的。专注时间一到,音乐响起,然后就停下手上的工作,休息;紧接其后,休息时间一到,相关的音乐响起,继续回来工作。
需要组件:2个label、2个edit、2个button、1个timer、1个mediaplayer。
具体效果:
相关设置很简单,在属性栏修改caption属性。
主要组件属性方法介绍:
system---timer组件:主要属性:interval(int类型)--设置方法:timer->interval=...;单位毫秒,定时器启动后经过interval时间后处理定时器中设置的内容
enable--设置方法:timer->Enable=true;启动定时器;timer->Enable=false;关闭定时器
system---mediaplayer组件:主要属性:filename--设置方法:mediaplayer->filename=("");制定指定的音乐文件地址,播放时自动调用。
函数:mediaplayer->play();开始播放;mediaplayer->close();停止播放。
相关函数及组件设置:
1.窗口创建时初始化设置
2.edit限制只能数字输入,防止strtoint转化失败
4.timer组件的内容
注意其中的地址,可根据自己选择的音乐来改变,主要格式有mp3,wav等。
本来设置为奇偶变化来区分两种计时,想到这样的话标志的值会一直增大,后来改为双重区分,其中flag只在0和1之间变化。
最后想一下觉得奇偶判断也可以,毕竟不会运行太久的,即可改为if(flag%2==0)......else......
5.停止按钮按下后
unit.h
unit.cpp
最后总结:大概实现了自己的要求,就是最后想把音乐这样的资源文件给嵌入到exe程序文件中,但由于用了madieplayer组件,尽管可以加入资源文件,但不能做到mediaplayer组件与资源文件的链接。希望之后再来探索软件安装,来实现软件的可移植性。
基本要求:设想是有两个时间:专注时间和休息时间,这两个是可以设置的。专注时间一到,音乐响起,然后就停下手上的工作,休息;紧接其后,休息时间一到,相关的音乐响起,继续回来工作。
需要组件:2个label、2个edit、2个button、1个timer、1个mediaplayer。
具体效果:
相关设置很简单,在属性栏修改caption属性。
主要组件属性方法介绍:
system---timer组件:主要属性:interval(int类型)--设置方法:timer->interval=...;单位毫秒,定时器启动后经过interval时间后处理定时器中设置的内容
enable--设置方法:timer->Enable=true;启动定时器;timer->Enable=false;关闭定时器
system---mediaplayer组件:主要属性:filename--设置方法:mediaplayer->filename=("");制定指定的音乐文件地址,播放时自动调用。
函数:mediaplayer->play();开始播放;mediaplayer->close();停止播放。
相关函数及组件设置:
1.窗口创建时初始化设置
void __fastcall TForm1::FormCreate(TObject *Sender) { //初始化,清空edit1和edit2,关闭定时器 edt1->Text=""; edt2->Text=""; tmr1->Enabled=False; mp1->Close(); }
2.edit限制只能数字输入,防止strtoint转化失败
//检查edit1的每次输入,不是数字,退格和delete键的情况下禁止 void __fastcall TForm1::edt1KeyPress(TObject *Sender, char &Key) { if(!(((Key >= '0') && (Key <= '9')) || (Key == VK_BACK) || (Key == VK_DELETE))) { Key = 0; } } //--------------------------------------------------------------------------- //检查edit2的每次输入,不是数字,退格和delete键的情况下禁止 void __fastcall TForm1::edt2KeyPress(TObject *Sender, char &Key) { if(!(((Key >= '0') && (Key <= '9')) || (Key == VK_BACK) || (Key == VK_DELETE))) { Key = 0; } }3.启动按钮按下时
void __fastcall TForm1::btn1Click(TObject *Sender) { FocusTime=StrToInt(edt1->Text); RestTime=StrToInt(edt2->Text); tmr1->Interval=60000*FocusTime; //默认从专注时间开始 tmr1->Enabled=True; //启动定时器 }其中FocusTime,RestTime为全局变量。设置时间单位为分钟,而interval单位是毫秒,故需要乘以60,000。
4.timer组件的内容
void __fastcall TForm1::tmr1Timer(TObject *Sender) { //由于专注时间和休息时间不断交替,每次进入定时器都会不同 //设置标志位flag int ApartSignal=1; if(Flag) { mp1->Close(); mp1->FileName=("C:\\Users\\XJ\\Desktop\\当前解决\\tixing.mp3"); //指定铃声 mp1->Open(); mp1->Play(); tmr1->Enabled=False; tmr1->Interval=60000*RestTime; tmr1->Enabled=True; ApartSignal=0; //ApartSignal=0时flag--,即flag=0 } else{ mp1->Close(); tmr1->Enabled=False; tmr1->Interval=60000*FocusTime; tmr1->Enabled=True; mp1->FileName=("C:\\Users\\XJ\\Desktop\\当前解决\\dalei.wav"); mp1->Open(); mp1->Play(); ApartSignal=1; //ApartSignal=1时flag++,即flag=1 } if(ApartSignal) { Flag++; } else{ Flag--; } }
注意其中的地址,可根据自己选择的音乐来改变,主要格式有mp3,wav等。
本来设置为奇偶变化来区分两种计时,想到这样的话标志的值会一直增大,后来改为双重区分,其中flag只在0和1之间变化。
最后想一下觉得奇偶判断也可以,毕竟不会运行太久的,即可改为if(flag%2==0)......else......
5.停止按钮按下后
void __fastcall TForm1::FormCreate(TObject *Sender) { //初始化,清空edit1和edit2,关闭定时器 edt1->Text=""; edt2->Text=""; tmr1->Enabled=False; mp1->Close(); }6.附上总代码:
unit.h
#ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <MPlayer.hpp> #include <Dialogs.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TTimer *tmr1; TMediaPlayer *mp1; TLabel *lbl1; TLabel *lbl2; TEdit *edt1; TEdit *edt2; TButton *btn1; TButton *btn2; void __fastcall tmr1Timer(TObject *Sender); void __fastcall FormCreate(TObject *Sender); void __fastcall btn1Click(TObject *Sender); void __fastcall btn2Click(TObject *Sender); void __fastcall edt1KeyPress(TObject *Sender, char &Key); void __fastcall edt2KeyPress(TObject *Sender, char &Key); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
unit.cpp
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
int Flag=1;
int FocusTime=0;
int RestTime=0;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tmr1Timer(TObject *Sender) { //由于专注时间和休息时间不断交替,每次进入定时器都会不同 //设置标志位flag int ApartSignal=1; if(Flag) { mp1->Close(); mp1->FileName=("C:\\Users\\XJ\\Desktop\\当前解决\\tixing.mp3"); //指定铃声 mp1->Open(); mp1->Play(); tmr1->Enabled=False; tmr1->Interval=60000*RestTime; tmr1->Enabled=True; ApartSignal=0; //ApartSignal=0时flag--,即flag=0 } else{ mp1->Close(); tmr1->Enabled=False; tmr1->Interval=60000*FocusTime; tmr1->Enabled=True; mp1->FileName=("C:\\Users\\XJ\\Desktop\\当前解决\\dalei.wav"); mp1->Open(); mp1->Play(); ApartSignal=1; //ApartSignal=1时flag++,即flag=1 } if(ApartSignal) { Flag++; } else{ Flag--; } }
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) { //初始化,清空edit1和edit2,关闭定时器 edt1->Text=""; edt2->Text=""; tmr1->Enabled=False; mp1->Close(); }
//---------------------------------------------------------------------------
void __fastcall TForm1::btn1Click(TObject *Sender) { FocusTime=StrToInt(edt1->Text); RestTime=StrToInt(edt2->Text); tmr1->Interval=60000*FocusTime; //默认从专注时间开始 tmr1->Enabled=True; //启动定时器 }
//---------------------------------------------------------------------------
void __fastcall TForm1::btn2Click(TObject *Sender)
{
mp1->Close(); //关闭定时器
}
//---------------------------------------------------------------------------
//检查edit1的每次输入,不是数字,退格和delete键的情况下禁止 void __fastcall TForm1::edt1KeyPress(TObject *Sender, char &Key) { if(!(((Key >= '0') && (Key <= '9')) || (Key == VK_BACK) || (Key == VK_DELETE))) { Key = 0; } } //--------------------------------------------------------------------------- //检查edit2的每次输入,不是数字,退格和delete键的情况下禁止 void __fastcall TForm1::edt2KeyPress(TObject *Sender, char &Key) { if(!(((Key >= '0') && (Key <= '9')) || (Key == VK_BACK) || (Key == VK_DELETE))) { Key = 0; } }
//---------------------------------------------------------------------------
最后总结:大概实现了自己的要求,就是最后想把音乐这样的资源文件给嵌入到exe程序文件中,但由于用了madieplayer组件,尽管可以加入资源文件,但不能做到mediaplayer组件与资源文件的链接。希望之后再来探索软件安装,来实现软件的可移植性。
相关文章推荐
- 用c++builder6.0开发小闹钟(用于提醒自己不要盯着屏幕太久)
- 不要把项目开发当做自己个人的展示舞台
- 提醒自己一下:不要浮躁!
- C#软件开发实例.私人订制自己的屏幕截图工具(八)添加键盘操作截图的功能
- 我根本不知道自己到底喜欢什么,将来该做什么?【用于自己迷茫的时候自我提醒】
- C#软件开发实例.私人订制自己的屏幕截图工具(七)加入放大镜的功能
- 迭代开发 --读“程序员,不要让自己做兔子”
- C#软件开发实例.私人订制自己的屏幕截图工具(一)功能概览
- C#软件开发实例.私人订制自己的屏幕截图工具(六)添加配置管理功能
- C#软件开发实例.私人订制自己的屏幕截图工具(五)针对拖拽时闪烁卡顿现象的优化
- 关于创业僵尸 -- 很早之前转过,放在这里提醒自己不要松懈
- 【原创】提醒久坐器:一个小时提醒一次,让自己不要长时间坐在椅子上
- HDU 2570 写在这里,提醒自己不要粗心。。。。。。。
- 用于提醒自己
- C#软件开发实例.私人订制自己的屏幕截图工具(七)添加放大镜的功能
- 提醒自己:把握好自己前进的方向和目标,不要"误入歧途"
- 编辑myeclipse的注释用于自己的开发
- 不要做浮躁的程序员,时刻提醒自己
- C#软件开发实例.私人订制自己的屏幕截图工具(十)在截图中包含鼠标指针形状
- C#软件开发实例.个人定制自己的屏幕抓图工具(八)加入了截图功能键盘