MFC控件编程:静态控件、按钮控件(一般按钮、单选按钮和复选按钮)、组合框控件、列表框控件、动画控件
2014-08-02 18:01
495 查看
一 、
静态控件包括: 图片、静态文本、分组框控件。
它们默认的ID都是IDC_STATIC。一般这些控件只起显示作用,如果要操作这些控件需要修改ID以保证ID的唯一性。
图片控件的使用:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/16/09b94f44853bcb42b82d7269a1ae7b46)
新建一个对话框程序,拖放一个Picture控件,添加一个bmp图片资源(IDB_BITMAP1)和图片控件相关联,选中Picture控件设置他的样式如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/16/6c79f6fe0827824dacc9acfeae6f5538)
运行结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/16/4e05d00e70599161611fc83ce7c3fcda)
按钮控件包括:一般按钮、单选按钮、复选按钮。
它们所对应的控件类都是CButton类, 对控件的操作一般都是通过与之相关的类提供的函数完成的。
组合框控件,对应的控件类是CComboBox, 可以接收用户的输入,也可以在多个选项中选择一项,还可以通过属性页的方式添加控件的数据项。
CComboBox类的常用函数:
列表框控件: 对应CListBox类,可以在多个选项中选择一项也可以选择多项。只能通过代码添加数据项。常用的函数与组合框类似。
列表框控件的使用:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/16/d96819bdfb07ff4f4bec1cfa5bb3ba35)
新建一个对话框程序,拖放两个List Box控件,四个按钮控件。 这里实现一个通过单击相应按钮交换左右两个列表框控件的数据
为左边的列表框控件关联一个控件变量:m_wndListBoxLeft,为右边的列表框控件添加一个控件变量:m_wndListBoxRight,
界面如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/16/9280f214c5ebc51c0323224c235a7412)
添加一个列表框初始化函数InitListBox为列表框添加数据并在OnInitDIalog函数中调用:
动画控件:对应CAnimateCtrl类播放简单的AVI帧动画。
函数:
二、 一个播放简单动画的例子
程序的运行截图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/16/43e3d62c95ac558fd9b5c3f4afeef096)
界面设计如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/16/17ee6ff1da47b67c3971dbe2f49eb1a2)
最大的那个是Animate控件,“打开”按钮用来选择要播放的文件,打开按钮左边为编辑框用来显示打开的文件的路径,
右边一个ListBox控件用来显示所有代开的播放文件名,一个CheckBox控件用来设置是否循环,一个Combo Box控件用来设置循环次数
两个Radido按钮用来设置播放状态:播放、停止
为 Animate控件关联一个控件类型的变量m_wndAnimateCtrl,为List Box控件关联一个控件类型的变量m_wndListCtrl方便后面对它们的操作
这里先介绍下CFileDialog类的使用:
CFileDialog是微软封装好的一个用于文件打开和保存的类,使用该类不需要创建对话框资源与之关联,只需构造一个对象即可
构造函数:
1 每个数据项之间用|隔开,整个字符串以||结尾
2 每个数据项分为显示的部分和过滤的部分。这两部分也以 | 分隔。
比如这里想代开avi文件或所有类型文件: "视频文件(*.avi)|*.avi|所有文件(*.*)|*.*||";
CFileDialog两个常用函数:
另外:为了保存和列表框(CListBox)/组合框相关联的数据,调用SetItemData/GetItemData函数来设置和获取附加数据。
具体功能函数实现如下:
运行效果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/16/6974104837448d9f865813bc6400d4de)
Demo下载地址:点击打开链接
静态控件包括: 图片、静态文本、分组框控件。
它们默认的ID都是IDC_STATIC。一般这些控件只起显示作用,如果要操作这些控件需要修改ID以保证ID的唯一性。
图片控件的使用:
新建一个对话框程序,拖放一个Picture控件,添加一个bmp图片资源(IDB_BITMAP1)和图片控件相关联,选中Picture控件设置他的样式如下:
运行结果:
按钮控件包括:一般按钮、单选按钮、复选按钮。
它们所对应的控件类都是CButton类, 对控件的操作一般都是通过与之相关的类提供的函数完成的。
组合框控件,对应的控件类是CComboBox, 可以接收用户的输入,也可以在多个选项中选择一项,还可以通过属性页的方式添加控件的数据项。
CComboBox类的常用函数:
GetCout (); // 获取数据项的数量 GetCurSel(); // 获取当前选择项 SetCurSel() ; // 设置当前选择项 GetLBText (); // 根据索引获取选项字符串 AddString()/InsertString/DeleteString/FindString // 添加/插入/删除/查找 数据项 ResetContent(); //重置数据项
列表框控件: 对应CListBox类,可以在多个选项中选择一项也可以选择多项。只能通过代码添加数据项。常用的函数与组合框类似。
列表框控件的使用:
新建一个对话框程序,拖放两个List Box控件,四个按钮控件。 这里实现一个通过单击相应按钮交换左右两个列表框控件的数据
为左边的列表框控件关联一个控件变量:m_wndListBoxLeft,为右边的列表框控件添加一个控件变量:m_wndListBoxRight,
界面如下:
添加一个列表框初始化函数InitListBox为列表框添加数据并在OnInitDIalog函数中调用:
void CCListBoxDlg::InitListBox() { m_wndListBoxLeft.AddString ("上海"); m_wndListBoxLeft.AddString ("北京"); m_wndListBoxLeft.AddString ("深圳"); m_wndListBoxLeft.AddString ("杭州"); }按钮对应的响应函数如下:
void CCListBoxDlg::OnBtnOneright() { // TODO: Add your control notification handler code here int nItem = m_wndListBoxLeft.GetCurSel (); if (nItem == LB_ERR) { MessageBox ("No Item Selected!"); return; } CString str; m_wndListBoxLeft.GetText (nItem, str); m_wndListBoxRight.AddString (str); m_wndListBoxLeft.DeleteString (nItem); } void CCListBoxDlg::OnBtnAllright() { // TODO: Add your control notification handler code here int nCount = m_wndListBoxLeft.GetCount (); for (int i = 0; i < nCount; ++i) { CString str; m_wndListBoxLeft.GetText (i, str); m_wndListBoxRight.AddString (str); } // 清空左边列表框,注意不要在循环里做 m_wndListBoxLeft.ResetContent (); }
动画控件:对应CAnimateCtrl类播放简单的AVI帧动画。
函数:
Open(); // 打开指定文件 Play(); // 播放 Stop(); // 停止
二、 一个播放简单动画的例子
程序的运行截图:
界面设计如下:
最大的那个是Animate控件,“打开”按钮用来选择要播放的文件,打开按钮左边为编辑框用来显示打开的文件的路径,
右边一个ListBox控件用来显示所有代开的播放文件名,一个CheckBox控件用来设置是否循环,一个Combo Box控件用来设置循环次数
两个Radido按钮用来设置播放状态:播放、停止
为 Animate控件关联一个控件类型的变量m_wndAnimateCtrl,为List Box控件关联一个控件类型的变量m_wndListCtrl方便后面对它们的操作
这里先介绍下CFileDialog类的使用:
CFileDialog是微软封装好的一个用于文件打开和保存的类,使用该类不需要创建对话框资源与之关联,只需构造一个对象即可
构造函数:
CFileDialog( BOOL bOpenFileDialog, //标识打开或者另存为对话框 LPCTSTR lpszDefExt = NULL, //默认的文件后缀 LPCTSTR lpszFileName = NULL, //默认的文件名称 DWORD dwFlags = , //窗口的风格 LPCTSTR lpszFilter = NULL, //过滤字符串 CWnd* pParentWnd = NULL //父窗口,通常设置为NULL );需要注意的是:过滤字符串的格式
1 每个数据项之间用|隔开,整个字符串以||结尾
2 每个数据项分为显示的部分和过滤的部分。这两部分也以 | 分隔。
比如这里想代开avi文件或所有类型文件: "视频文件(*.avi)|*.avi|所有文件(*.*)|*.*||";
CFileDialog两个常用函数:
CFileDialog::GetPathName() // 获取打开的文件的路径 CFileDialog::GetFileName() // 获取文件名称
另外:为了保存和列表框(CListBox)/组合框相关联的数据,调用SetItemData/GetItemData函数来设置和获取附加数据。
具体功能函数实现如下:
/****************************************************************** 打开视频文件,添加不重复的视频文件到播放列表中,保存文件路径 *******************************************************************/ void CMFCPalyerDlg::OnBtnOpenfile() { // TODO: Add your control notification handler code here // 文件类型过滤器 char szFilter[] = "视频文件(*.avi)|*.avi|所有文件(*.*)|*.*||"; CFileDialog dlg (TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL); if (IDCANCEL == dlg.DoModal ()) return; m_strPath = dlg.GetPathName (); if (LB_ERR == m_wndListBox.FindString (-1, dlg.GetFileName ())) { int nIndex = m_wndListBox.AddString (dlg.GetFileName ()); // 把列表框项对应的路径信息存入附加附加数据 CString *pStrPath = new CString; *pStrPath = dlg.GetPathName (); m_wndListBox.SetItemData (nIndex, (DWORD)pStrPath); } Play(); UpdateData (FALSE); }
/************************************************************************ 当勾选"循环"复选框式启用组合框控件供用户选择循环次数,否则禁用组合框 *************************************************************************/ void CMFCPalyerDlg::OnCheck() { // TODO: Add your control notification handler code here if (m_check.GetCheck ()) m_wndComboBox.EnableWindow (); else m_wndComboBox.EnableWindow (FALSE); }
/*************************************************************************************** 播放视频文件函数,注意:这里的播放路径和循环次数由成员变量:m_strPath,m_loopcount决定 ****************************************************************************************/ void CMFCPalyerDlg::Play() { // 打开视频文件 m_wndAnimateCtrl.Open (m_strPath); // 播放 m_wndAnimateCtrl.Play (0, -1, m_loopcount); }
/************************************************************************** 播放按钮 ***************************************************************************/ void CMFCPalyerDlg::OnPlay() { // TODO: Add your control notification handler code here Play(); } /*************************************************************************** 停止按钮 ****************************************************************************/ void CMFCPalyerDlg::OnStop() { // TODO: Add your control notification handler code here m_wndAnimateCtrl.Stop (); }
/************************************************************************** 相应列表框控件LBN_DBLCLK(鼠标双击)事件播放选中文件 ***************************************************************************/ void CMFCPalyerDlg::OnDblclkList1() { // TODO: Add your control notification handler code here int nItem = m_wndListBox.GetCurSel (); CString *pStrPath = (CString*)m_wndListBox.GetItemData (nItem); m_strPath = *pStrPath; Play (); }
/********************************************************************************* 通过组合框控件选择设置(CBN_SELCHANGE)播放循环次数(改变成员变量m_loopcount的值) **********************************************************************************/ void CMFCPalyerDlg::OnSelchangeCombo1() { // TODO: Add your control notification handler code here int nSel = m_wndComboBox.GetCurSel (); if (CB_ERR == nSel) return; switch (nSel) { case 0:// 1 次 m_loopcount = 1; break; case 1:// 2 次 m_loopcount = 2; break; case 2:// 一直 m_loopcount = -1; break; } }
运行效果如下:
Demo下载地址:点击打开链接
相关文章推荐
- VS2010/MFC编程入门之十九(常用控件:静态文本框)
- MFC中单选按钮控件
- MFC控件-单选按钮(Radio Button)
- VS2010/MFC编程入门之二十(常用控件:静态文本框)
- 【转】VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)
- VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)
- VS2010/MFC编程入门之二十一(常用控件:按钮控件Button、Radio Button和Check Box)
- 【转】VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)
- VS2010/MFC编程入门之二十三(常用控件:列表框控件ListBox)
- 【MFC入门】之四 标准控件在可视化编程中的应用之滚动条控件,静态控件与列表框控件
- VS2010中新控件的编程------ MFC按钮
- VS2010/MFC编程入门之二十四(常用控件:组合框控件Combo Box)
- 怎样学好MFC中各个控件编程或者GDI编程,举例说明和源码下载:比如怎样自绘菜单,按钮,工具条或Tab控件
- MFC学习笔记.day04-静态文本框, 检索控件句柄,UpdateData函数,七种编辑框加法编程
- VS2010/MFC编程入门之二十一(常用控件:按钮控件Button、Radio Button和Check Box)
- VS2010/MFC编程入门之二十三(常用控件:列表框控件ListBox)
- VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)
- VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)
- 猎豹MFC--对话框 静态文本 编辑框 按钮 对话框 访问控件
- android基本控件示例RadioButton单选按钮,一般和RadioGroup一起用(03)