MFC 列表,日历,及动画控件
2015-10-09 19:39
363 查看
新建基于对话框的应用程序。
1.列表控件
新建一个列表控件,属性改为报表(report),在列表控件下建两个静态文本框,用来显示选中的项。为列表控件添加一个变量m_list;
在头文件中添加一个pubilic图像列表控件
在初始化区域中编写代码
运行结果为:
![](http://img.blog.csdn.net/20151009182342664?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
双击图形列表控件编程:
将下面右边的静态文本框ID设为IDC_STATIC_SHOW
![](http://img.blog.csdn.net/20151009183314882?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
添加控件,如图所示:
![](http://img.blog.csdn.net/20151009184733087?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
姓名编辑框ID设为IDC_EDIT_NAME
,年龄编辑框设为IDC_EDIT_AGE.
性别单选按钮,先选中'男',"女",设置Group为True.
给姓名编辑框添加变量m_name,
年龄编辑框添加变量m_age,
性别单选按钮添加变量value型的int型的m_sex.
设置女单选框的Group属性值为FALSE.
双击添加数据按钮编程:
添加一个控制风格的单选按钮
如图所示:
![](http://img.blog.csdn.net/20151009190020867?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
设置风格,报表的ID分别为IDC_RADIO_LIST,IDC_RADIO_REPORT
设置好group属性后,给给列表radio添加一个变量m_style
在初始化区域:
![](http://img.blog.csdn.net/20151009190332860?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.添加日历控件
添加控件,如图所示:
![](http://img.blog.csdn.net/20151009191542217?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
给日历控件添加变量 m_monthCalCtrl
给年,月,日编辑框添加变量m_year,m_month,m_day
在Dlg.cpp文件中,的构造函数中添加代码
双击设置,添加代码:
![](http://img.blog.csdn.net/20151009192058897?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.添加动画控件
如图所示
![](http://img.blog.csdn.net/20151009193229711?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
给动画控件Animation Control 添加变量m_animate
设置停止,播放的ID为IDC_BUTTON_STOP,IDC_BUTTON_PLAY
添加一个avi视频资源,并导入:
![](http://img.blog.csdn.net/20151009193710400?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在初始化区域添加代码:
分别双击停止和播放编程:
运行结果
1.列表控件
新建一个列表控件,属性改为报表(report),在列表控件下建两个静态文本框,用来显示选中的项。为列表控件添加一个变量m_list;
在头文件中添加一个pubilic图像列表控件
// 图像控件 CImageList m_imageList;
在初始化区域中编写代码
// TODO: 在此添加额外的初始化代码 srand(time(NULL)); CString title[3] = { L"性别", L"年龄", L"名字" }; // 插入标题 for (int i = 0; i < 3; i++){ m_list.InsertColumn(i, title[i], LVCFMT_CENTER); } // 设置标题宽度 m_list.SetColumnWidth(0, 70); m_list.SetColumnWidth(1, 50); m_list.SetColumnWidth(2, 80); // 设置列表风格 m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // 设置颜色 m_list.SetBkColor(RGB(255, 179, 179)); m_list.SetTextBkColor(RGB(255, 125, 180)); m_list.SetTextColor(RGB(255, 21, 21)); // 插入图片 CBitmap bm; m_imageList.Create(24, 24, ILC_COLOR32, 3, 3); bm.LoadBitmapW(IDB_BITMAP1); // 载入图片 m_imageList.Add(&bm, RGB(0, 255, 0)); // 添加图片 bm.DeleteObject(); // 释放资源 bm.LoadBitmapW(IDB_BITMAP2); // 载入图片 m_imageList.Add(&bm, RGB(0, 255, 0)); // 添加图片 m_list.SetImageList(&m_imageList, LVSIL_SMALL); // 插入输出数据 CString firName[15] = { L"谢", L"宋", L"唐", L"许", L"韩", L"冯", L"邓", L"曹", L"彭", L"曾", L"肖", L"田", L"董", L"袁", L"潘" }; CString senName[15] = { L"林", L"", L"言", L"", L"", L"", L"于", L"", L"", L"时", L"", L"", L"酒", L"江", L"被" }; CString thrName[15] = { L"赵", L"钱", L"顺", L"李", L"周", L"董", L"路", L"万", L"凡", L"峰", L"平", L"江", L"志", L"仇", L"山" }; for (int i = 0; i < 5; i++){ CString age; int sex = rand() % 2; age.Format(L"%d", rand() % 20 + 20); m_list.InsertItem(0, sex ? L"男": L"女",!sex); // 在这里插入图片sex 0,1 m_list.SetItemText(0, 1, age); m_list.SetItemText(0, 2, firName[rand() % 15] + senName[rand() % 15] + thrName[rand() % 15]); }
运行结果为:
双击图形列表控件编程:
将下面右边的静态文本框ID设为IDC_STATIC_SHOW
void CListCalendarAnimateDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR); // TODO: 在此添加控件通知处理程序代码 // 遍历 for (int i = 0; i < m_list.GetItemCount(); i++){ if (m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED){ // 如果选中 CString sex = m_list.GetItemText(i, 0); CString age = m_list.GetItemText(i, 1); CString name = m_list.GetItemText(i, 2); CString str = L"性别:" + sex + L" 年龄:" + age + L" 姓名:" + name; SetDlgItemText(IDC_STATIC_SHOW, str); } } *pResult = 0; }运行结果
添加控件,如图所示:
姓名编辑框ID设为IDC_EDIT_NAME
,年龄编辑框设为IDC_EDIT_AGE.
性别单选按钮,先选中'男',"女",设置Group为True.
给姓名编辑框添加变量m_name,
年龄编辑框添加变量m_age,
性别单选按钮添加变量value型的int型的m_sex.
设置女单选框的Group属性值为FALSE.
双击添加数据按钮编程:
void CListCalendarAnimateDlg::OnBnClickedButtonAdddata() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); // 将控件中的值传给成员变量 if (m_name.IsEmpty()){ // 如果姓名编辑框为空 AfxMessageBox(L"姓名不能为空", MB_ICONERROR); GetDlgItem(IDC_EDIT_NAME)->SetFocus(); // 设置焦点到编辑框 return; } if (m_age.IsEmpty()){ // 如果年龄编辑框为空 AfxMessageBox(L"请输入年龄.", MB_ICONERROR); GetDlgItem(IDC_EDIT_AGE)->SetFocus(); // 设置焦点到年龄编辑框 return; } int num = m_list.GetItemCount(); // 获取现在选项个数 m_list.InsertItem(num, !m_sex ? L"男" : L"女", m_sex); // 插入性别和位图 m_list.SetItemText(num, 1, m_age); // 插入年龄 m_list.SetItemText(num, 2, m_name); // 插入姓名 m_age = m_name = L""; // 将姓名,年龄设为空 UpdateData(FALSE); // 将成员变量的值传给控件 }此时便可以添加数据了
添加一个控制风格的单选按钮
如图所示:
设置风格,报表的ID分别为IDC_RADIO_LIST,IDC_RADIO_REPORT
设置好group属性后,给给列表radio添加一个变量m_style
在初始化区域:
// 显示风格初始化 m_style.SetCheck(TRUE); m_list.ModifyStyle(LVS_ICON | LVSIL_SMALL | LVS_REPORT | LVS_OWNERDRAWFIXED, LVS_LIST, TRUE);分别双击列表radio和报表radio编程:
void CListCalendarAnimateDlg::OnBnClickedRadioList() { // TODO: 在此添加控件通知处理程序代码 m_list.ModifyStyle(LVS_ICON | LVSIL_SMALL | LVS_REPORT | LVS_OWNERDRAWFIXED, LVS_LIST, TRUE); } void CListCalendarAnimateDlg::OnBnClickedRadioReport() { // TODO: 在此添加控件通知处理程序代码 m_list.ModifyStyle(LVS_ICON | LVS_LIST | LVSIL_SMALL, LVS_REPORT, TRUE); }运行结果:
2.添加日历控件
添加控件,如图所示:
给日历控件添加变量 m_monthCalCtrl
给年,月,日编辑框添加变量m_year,m_month,m_day
在Dlg.cpp文件中,的构造函数中添加代码
CListCalendarAnimateDlg::CListCalendarAnimateDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CListCalendarAnimateDlg::IDD, pParent) , m_name(_T("")) , m_age(_T("")) , m_sex(0) , m_year(0) , m_month(0) , m_day(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 添加的代码 CTime tm = CTime::GetCurrentTime(); // 获取系统时间 m_year = tm.GetYear(); m_month = tm.GetMonth(); m_day = tm.GetDay(); }
双击设置,添加代码:
void CListCalendarAnimateDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); // 将控件的数据传递给成员变量 CTime tm(m_year, m_month, m_day,0,0,0); m_monthCalCtrl.SetCurSel(tm); }在初始化区域中添加:
// 日历控件 m_monthCalCtrl.SetFirstDayOfWeek(0); //设置一星期的第一天运行结果为:
3.添加动画控件
如图所示
给动画控件Animation Control 添加变量m_animate
设置停止,播放的ID为IDC_BUTTON_STOP,IDC_BUTTON_PLAY
添加一个avi视频资源,并导入:
在初始化区域添加代码:
// 动画控件 m_animate.Open(IDR_AVI1); GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE); // 使播放按钮不能按下
分别双击停止和播放编程:
void CListCalendarAnimateDlg::OnBnClickedButtonPaly() { // TODO: 在此添加控件通知处理程序代码 m_animate.Play(0, -1, -1); // 播放视频 GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE); // 播放按钮使不能 GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(TRUE); // 停止按钮使能 } void CListCalendarAnimateDlg::OnBnClickedButtonStop() { // TODO: 在此添加控件通知处理程序代码 m_animate.Stop(); // 暂停播放 GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE); // 停止按钮使不能 GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(TRUE); // 播放按钮使能 }
运行结果
相关文章推荐
- unity与java相互调用
- C++指针详解
- android开发之使用拼音搜索汉字
- android开发之使用拼音搜索汉字
- android开发之使用拼音搜索汉字
- android开发之使用拼音搜索汉字
- Machine Learning Week 1
- Android必备的Java知识点
- bzoj2005
- 第四周实践项目5--循环双链表应用
- NIOS II IDE编译出错:no file name for '-include'。Quartus ii中的.tcl文件run不起来
- 数组对称判断方法
- bzoj2005
- Android中的距离单位
- android集成微信支付(全是坑)
- junit 的classpath文件
- 51nod 01背包(DP)
- 编写Win32 lib时使用CString的方法
- 二分法查找
- 隐藏属性