MFC-常用控件使用
1 . 按钮
- 按钮变灰 CButton::EnableWindow(FALSE);
- 按钮设置名字 CButton::SetWindowText(_T(“xxxx”));
- 加载bitmap (打开按钮属性的bitmap)
CButton::SetBitmap(bitmap); //bitmap: 位图类 对象
//改变按钮大小来适应位图大小
CButton::MoveWindow(200,200,bmp.bmWidth,bmp.bmHeight);
2 . bitmap操作
- CBitmap bitmap; //定义 位图类 对象
bitmap.LoadBitmapW(IDB_BITMAP1); //加载位图 - BITMAP bmp; //bmp里面存是位图信息,主要宽 高
bitmap.GetBitmap(&bmp); //得到位图信息 - 通过路径获取bitmap句柄
#define HBMP(filepath,width,height) (HBITMAP)LoadImage(AfxGetInstanceHandle(),filepath,IMAGE_BITMAP,width,height,LR_LOADFROMFILE|LR_CREATEDIBSECTION)
例如:
m_Button.SetBitmap(HBMP(TEXT(“./res/demo.bmp”), 100, 100));
m_Button.MoveWindow(200,200,100,100);
3 . 静态文本框(static text) :主要做显示 文字或者图片
- 常用属性设置
Number -> True 只能输入数字
Password -> True 密码模式
Want return -> True 接收回车键,自动换行,只有在多行模式下,才能换行
Multiline -> True 多行模式
Auto VScroll -> True Vertical Scroll -> True 当垂直字符太多,自动出现滚动条
Read Only -> True 只读 - 静态文本框设置bitmap:
CStatic:: ModifyStyle(0xf,SS_BITMAP|SS_CENTERIMAGE);//风格为位图居中显示
CStatic::SetBitmap(); //可结合路径加载 - 关联变量和控件数据的交互更新
把编辑区的内容更新到str中 UpdateData(TRUE);
把str的内容更新到编辑区中 UpdateData(FALSE); - 编辑区内容操作
获取编辑区内容 CStatic::GetWindowText(str);
设置编辑区内容 CStatic::SetWindowText(str);
4. 单选框(RadioButton)
- 初始化单选框 CWnd::CheckRadioButton(IDC_RADIO1,IDC_RADIO3,IDC_RADIO2)
初始状态 IDC_RADIO1 和IDC_RADIO3之间,IDC_RADIO2被选中 - 判断单选框是否被按下 CWnd::IsDlgButtonChecked(IDC_RADIO1)
按下返回TRUE
5. 复选框(CheakBox)
- 单选框和复选框都是继承CButton, 上面单选框的两个函数也可以用
- 设置被选中 CButton::SetCheck(1); //1选中 0不选中
- 获取按钮选择状态 CButton::GetCheck();
6. 列表框(ListBox) 编号从0开始
- 给列表框添加一个字符串 CListBox::AddString(m_str)
- 获取当前选中项编号 int i=CListBox::GetCurSel();
- 删除指定位置编号的字符串 CListBox::DeleteString(i);
- 选中列表列表框某一项,自动触发事件:LBN_SELCHANGE
- 获取指定位置的内容 CListBox::GetText(i , m_str);
- 在指定位置插入字符串 CListBox::InsertString(i , m_str);
7. 下拉框(ComBox) 编号从0开始
- 属性设置
data: 设置初始内容,不同内容间同英文的分号“;”分隔
type: Droplist不可编辑的 Dropdown是可编辑的
sort: 按照名称排序,默认排序,使用时尽量选false - 设置默认的选项 CComboBox::SetCurSel(1);
- 获取内容: CComboBox::GetLBText(i , m_str);
- 其他接口和上一个控件通用
8.滑块(Horizontal Scroll Bar)
- 处理滑块的事件需要在父窗口添加事件响应函数 WM_HSCROLL
- 设置给定滑块的最小和最大位置:CScrollBar::SetScrollRange(0,100);
- 设置一个滑块的当前位置:CScrollBar::SetScrollPos(50);
- 获取一个滑块的当前位置: CScrollBar::GetScrollPos();
父: 消息响应函数 OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
pScrollBar: 如果有多个滑块,那个触发消息的滑块的地址,可结合if语句判断。
nPos : 滑块的当前位置(只有鼠标移动滑块才有值,鼠标点击其他四个位置返回的都是0)。
nSBCode : 滚动条位置关系。switch (nSBCode) //判断滚动条的哪一部分
{
case SB_THUMBPOSITION: //滑块位置
break;
case SB_LINELEFT: //向左的箭头
break;
case SB_LINERIGHT: //向左的箭头
break;
case SB_PAGELEFT: //箭头和滑块之间左边
break;
case SB_PAGERIGHT: //箭头和滑块之间右边
break;
default:
break;
}
9.旋转按钮 (SpinControl)
- 属性设置 Auto Buddy -> True Set buddy integer -> True
- 微调(旋转)按钮的顺序比伙伴大1 (Ctrl + D 查看),伙伴不能为0
- 设置范围 CSpinButtonCtrl::SetRange32(0,100); //32->int 没有32->short
- 设置进制数 CSpinButtonCtrl::SetBase(10); // 10 或者 16进制
10.列表控件(ListControl)
- 属性设置报表模式 view -> Report (报表方式)
代码设置报表模式:CWnd::ModifyStyle(0, LVS_REPORT); - 设置列表风格 CListCtrl::SetExtendedStyle();
LVS_EX_FULLROWSELECT:选择整行
LVS_EX_GRIDLINES:网格方式 - 插入列CListCtrl::InsertColumn(列编号,str,对齐方式(LVCFMT_LEFT/ LVCFMT_RIGHT/ LVCFMT_CENTER),每个单元格宽度);
- 插入行后,才能设置子项内容,(确定有几行,0(i)行是实际的第二行,0(j)列是第一列) CListCtrl::InsertItem(i ,str);
- 设置子项内容(设置第几列) CListCtrl::SetItemText(i , j , str);
- 获取内容 CListCtrl::GetItemText(i , j); 点击事件NM_CLIK可获取点击行列信息
NM_LISTVIEW* pList = (NM_LISTVIEW*)pNMHDR;
int i = pList->iItem;
int j = 1;
11.树控件(TreeControl)
- 常用属性设置
has buttons -> true
has lines -> true
lines at root -> true - 加载自定义图标
获取应用程序对象指针 AfxGetApp()
加载自定义图标 HICON icon= CWinApp::LoadIcon(ID); - 创建图像列表
.h 文件类中定义图形列表 CImageList 对象
创建图像列表 CImageList::Create(30,30,ILC_COLOR32,4,4)
30 30: 图片长宽
ILC_COLOR32:图片样式
4 4 :有几张图片 写几张
图像列表追加图标 CImageList::Add(icon) - 树控件设置图像列表 CTreeCtrl::SetImageList(&m_ImageList,TVSIL_NORMAL);
- 插入节点 CTreeCtrl::InsertItem();
HTREEITEM root=m_TreeCrl.InsertItem(_T(“根节点”),0,0,NULL);
//根节点 第0张图片
HTREEITEM father=m_TreeCrl.InsertItem(_T(“父节点”),1,1,root);
//父节点 第1张图片
HTREEITEM son=m_TreeCrl.InsertItem(_T(“子节点”),2,2,father);
//子节点 第2张图片 - 设置默认选中项 CTreeCtrl::SelectItem(fathter);
12.标签控件(TabControl)
- 设置子对话框相应属性:Style -> Child (子窗口) Border -> None (无边框)
还没有评论,来说两句吧...