12.MFC控件(一)
一、MFC控件介绍
1. 静态控件,包括图片、静态文本、分组框。
在代码中很好操作该类控件,控件的默认ID都是IDC_STATIC。
如果需要操作,必须修改控件的ID。
2. 按钮控件,包括一般按钮、复选按钮、单选按钮。
控件类都是CButton类。
如果需要在同一个对话框中有多个单选的分组,需要设置单选按钮的group属性。
3. 组合框和列表框
3.1 组合框控件
控件类是CComboBox类,可在在多个数据项中选择一项,也可以接受用户的输入。
在属性中添加多个数据项时,用 ; 隔开。
3.2 列表框控件
控件类是CListBox类,可以在多个数据项中选择一项或多项,但不接受用户输入。
3.3 CListBox的使用(CComboBox与之类似)
(1)添加数据项:int CListBox::AddString( LPCTSTR lpszItem );
(2)删除指定的数据项:int CListBox::DeleteString( UINT nIndex );
(3)查找数据项:int CListBox::FindString( int nStartAfter, LPCTSTR lpszItem );
(4)清空数据项:void CListBox::ResetContent( );
(5)设置当前选择项:int CListBox::SetCurSel( int nSelect );
(6)获取当前选择项:int CListBox::GetCurSel( );
(7)获取指定选项文本:void CListBox::GetText( int nIndex, CString& rString );
int CListBox::GetText( int nIndex, LPTSTR lpszBuffer );
(8)获取数据项的数量:int CListBox::GetCount( );
4. 动画控件 - 控件类是CAnimateCtrl类,功能是播放简单动画,动画文件的后缀是*.avi
4.1 打开文件
BOOL CAnimateCtrl::Open( LPCTSTR lpszFileName );
4.2 播放文件
BOOL CAnimateCtrl::Play( UINT nFrom, UINT nTo, UINT nRep );
4.3 停止播放
BOOL CAnimateCtrl::Stop( );
二、播放动画的例子
1. CFileDialog类 - 文件对话框类
1.1 构造文件对话框
CFileDialog ( BOOL bOpenFileDialog, //TRUE - 打开,FALSE - 另存为
LPCTSTR lpszDefExt = NULL, //默认的文件类型
LPCTSTR lpszFileName = NULL, //默认的文件名称
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, //窗口样式
LPCTSTR lpszFilter = NULL, //文件类型的过滤
CWnd* pParentWnd = NULL); //父窗口,通常为NULL即可
文件类型过滤字符串的格式:
每个数据项之间用 | 分隔,整个字符串以 || 结尾
每个数据项包括两部分,显示和过滤部分,这两部分也一 | 隔开
"视频文件(*.avi)|*.avi|所有文件(*.*)|*.*||";
1.2 获取文件路径
CString CFileDialog::GetPathName( );
1.3 获取文件名称
CString CFileDialog::GetFileName( );
2. CListBox函数介绍
2.1 设置数据项的附加数据
int CListBox::SetItemData( int nIndex, DWORD dwItemData );
2.2 获取数据项的附加数据
DWORD CListBox::GetItemData( int nIndex );
三、旋转按钮、进度条、滑块
旋转按钮 - 控件类CSpinButtonCtrl类
进度条 - 控件类是CProgressCtrl类
滑块 - 控件类是CSliderCtrl类
1. 设置/获取控件的数值范围
SetRange / GetRange
2. 设置控件的增量(步长)
BOOL CSpinButtonCtrl::SetAccel( int nAccel, UDACCEL* pAccel );
int CProgressCtrl::SetStep( int nStep );
int CProgressCtrl::StepIt( ); //前进一个步长
int CSliderCtrl::SetLineSize( int nSize );
int CSliderCtrl::SetPageSize( int nSize );
3.设置/获取控件的当前位置
int SetPos( int nPos );
int GetPos( );
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步