时间条控件制作简明教程
来源:互联网 发布:java接口类型 编辑:程序博客网 时间:2024/05/17 22:11
转自百度
该控件将用到,窗口,如何制作自定义,时间周期类等知识.
制作之前首先请大家看看 Nokia Forum 关于 自定义控件的原理和教程
CPeriodic 的类的使用可以参考sdk中
Developer Library >> API Reference >> C++ API reference >> Timers and Timing Services >> CPeriodic
1.类的定义:
Code:
class CMyTimerContainer : public CCoeControl
{
public:
void ConstructL (TInt aSecond ,TPoint aPoint, TSize aSize);// aSecond 初始的秒数,TPoint 控件所在位置; TSize控件大小
~CMyTimerContainer();
void Draw(const TRect& aRect) const;
static TInt Start__(TAny* aObject); //周期函数
void Start_();//周期函数
private: //data
CPeriodic* iPeriodic;
TInt iLeft; //剩余的时间
TInt iTotal;//总共的时间
TPoint iPoint; //控件所在位置,
TSize iSize; //控件的大小
}
2.周期函数:
Code:
TInt CMyTimerContainer::Start__(TAny* aObject)
{
((CMyTimerContainer*)aObject)->Start_(); // cast, and call non-static function
return 1;
}
void CMyTimerContainer::Start_()
{
iLeft--;
if(iLeft==0)
{
DrawNow();
iPeriodic->Cancel();
return;
}
DrawNow();
}
3.绘图函数
Code:
void CMyTimerContainer::Draw(const TRect& aRect) const
{
CWindowGc& gc = SystemGc();
/*画背景*************************/
gc.SetBrushColor( KRgbBlack );
gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
gc.DrawRect(aRect);
/*画进度条*************************/
gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
gc.SetBrushColor( KRgbRed );
gc.SetPenStyle( CGraphicsContext::ENullPen );
gc.DrawRect( TRect(TSize(iLeft*Size().iWidth/iTotal,iSize.iHeight)) );
}
4.控件的构造
Code:
void CMyTimerContainer::ConstructL(TInt aSecond ,TPoint aPoint, TSize aSize)
{
CreateWindowL();
iTotal = aSecond;
iLeft = iTotal;
iPoint = aPoint;
iSize = aSize;
iPeriodic = CPeriodic::NewL(CActive::EPriorityIdle);
iPeriodic->Start(0/*8000000*/, 1000000/*35714*/, TCallBack(Start__, this));
SetExtent(aPoint,aSize);
ActivateL();
}
5.如何调用该控件
Code:
a,在XXXContainer.h中加入该控件
private: //data
CMyTimerContainer* iTimer;
b,在构造函数中构造其,秒数,位置,以及大小
void CXXXXContainer::ConstructL(const TRect& aRect)
{
CreateWindowL();
iTimer = new (ELeave) CMyTimerContainer;
iTimer->ConstructL( 60/*init seconds*/,TPoint(0,100),TSize(176,15),this);
SetRect(aRect);
ActivateL();
}
至此一个时间控件就做好了,大家可以按照以上的步骤做一下.
贴子相关图片:
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1479018
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 时间条控件制作简明教程
- 关于安装程序制作的简明教程
- 关于安装程序制作的简明教程
- 用arcgis制作色带图例简明教程
- 关于安装程序制作的简明教程(一)
- photoshop教程:流行导航条风格制作
- 2013 duilib入门简明教程 -- 简单控件介绍 (12)
- C++箴言:避免析构函数调用虚函数
- C++箴言:避免析构函数调用虚函数
- 基于Java Socket的文件UpLoad代码
- 关于inline函数
- 《高质量C++/C编程指南》第9章:类的构造函数、析构函数与赋值函数
- 时间条控件制作简明教程
- c++笔试题汇总
- 关于inline函数
- 构建基于MVC+Observer模式的、艺术性的移动开发框架(KJAVA版)(二)
- 字符数组VS字符指针
- 关于Symbian的"程序已经关闭"错误
- DLL的Export和Import
- 用指向基类对象的指针输出数据
- C++多继承的细节