十七、动画控件(Animation Control)
作用:
画控件是显示AVI(视听交错)格式──标准Windows视/听格式片段的矩形窗口。动画控件只能运行简单的AVI片段。可以将AVI片段作为一个AVI资源加入到自己的应用中去,或作为一个独立的AVI文件伴随应用。既然当AVI片段显示时,线程继续执行,所以一个动画控件的一个通用使用就是在一个长时间的操作时确定系统是活动状态。
消息映射函数:
- ACN_START :指示动画开始播放
- ACN_STOP : 指示动画已停止播放
属性: - WS_CHILD 经常使用
- WS_VISIBLE 通常使用
- WS_DISABLED 很少使用
除了以上列出的窗口风格以外,还可能使用一种或多种下面列出的动画控件的动画控件风格: - ACS_CENTER 使得AVI片段在动画控件窗口里居中并且当AVI片段被打开时,保持动画控件的大小和位置不变。如果没有设定此风格,则当AVI片段被打开时,控件将重新定义为AVI片段中图象的大小。
- ACS_TRANSPARENT 使用透明背景而不是在AVI片段中指定的背景颜色绘制AVI片段。
- ACS_AUTOPLAY 使得AVI片段一打开就开始运行。当片段播放时,它将自动重复。
使用方法:
1、向资源中加载AVI资源
2、向对话框中加载动画控件,并创建控件型变量。
CAnimateCtrl m_a;
3、使用Open(int)函数展示AVI视屏。
m_a.Open(IDR_AVI);
注意:必须确切地是一个视频流并且它必须至少有一个帧。 文件中至多有两个 流(典型地,其它流,比如音频流,尽管动画控件忽略音频流)。 片段必须是非压缩的或用RLE8压缩的。 在视频流中不允许调色板改变。
十八、富编辑框控件(Rich Edit 2.0 Control)
作用:
一个“带格式编辑控件”是一个窗口,在这个窗口中用户可以输入和编辑文本。文本可以是字母或段落格式,也可以包括嵌入的OLE对象。与普通编辑框相比,它可以自由设置文本颜色和大小等,而其他的文本编辑框不能直接设置文本的颜色和字体。
消息映射函数:无
属性:
- WS_CHILD 总是使用。
- WS_VISIBLE 经常使用。
- WS_DISABLED 很少使用。
- WS_GROUP 可用于成组控件。
- WS_TABSTOP 将编辑控件包括在TABLE键的顺序中。
使用方法:
1、将富文本编辑框放到对话框中,并建立相应的控件型变量。
CRichEditCtrl m_RichEdit;
2、在显示该对话框之前调用AfxInitRichEdit一次。通常是在你的应用程序的IniInstance成员函数中调用这个函数。
3、使用控件型变量操作富编辑框
void C富编辑框RichEditDlg::OnText()
{
// TODO: 在此添加命令处理程序代码
CHARFORMAT cf = {0};
cf.cbSize = sizeof(cf);
m_RichEdit.GetSelectionCharFormat(cf);
CFontDialog dlg(cf);
if (dlg.DoModal()==IDOK)
{
dlg.GetCharFormat(cf);
m_RichEdit.SetSelectionCharFormat(cf);
}
}
十九、时间控件(Data Time Picker)
作用:
时间控件是一个可以显示和修改时间的控件。
消息映射函数:
- DTN_CLOSEUP :指示组合框的列表框已关
- DTN_USERSTRING :发出信号表示用户在控件内的操作结束
- NM_KILLFOCUS :指示控件已丢失输入焦点
- DTN_DATAITEMCHANGE :指示DTP控件内更改
- DTN_DROPDOWN :用户单击了下拉按钮
- DTN_FORMAT :请求在称为回调字段的部分格式字符串中显示文本
- DTN_FORMATQUERY : 请求有关在回调字段中允许显示的最大文本大小的信息
使用方法:
1、将时间控件拖入对话框中,建立控件型变量。
CDateTimeCtrl m_BiginData;
2、创建DTN_DATAITEMCHANGE消息函数,获取最新的时间
void C时间控件Dlg::OnDtnDatetimechangeEndtime(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMDATETIMECHANGE pDTChange = reinterpret_cast<LPNMDATETIMECHANGE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
CString s;
CTime dataBegin;
CTime dataEnd;
this->m_BiginData.GetTime(dataBegin);//获取最新时间
this->M_EndData.GetTime(dataEnd);
CTimeSpan ts = dataEnd - dataBegin;
s.Format(_T("%d 天"), ts.GetDays());
SetDlgItemText(IDC_EDIT1, s);
*pResult = 0;
}