MFC 常用UI组件使用

Love The Way You Lie 2022-12-28 08:25 173阅读 0赞

Button

在这里插入图片描述

双击即可自动创建一个点击事件处理函数。

  1. BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
  2. ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication2Dlg::OnBnClickedButton1)
  3. END_MESSAGE_MAP()
  4. void CMFCApplication2Dlg::OnBnClickedButton1()
  5. {
  6. }

Radio

在这里插入图片描述
关联int变量

在这里插入图片描述

  1. void CMFCApplication2Dlg::DoDataExchange(CDataExchange* pDX)
  2. {
  3. CDialogEx::DoDataExchange(pDX);
  4. //关联变量和单选框
  5. DDX_Radio(pDX, IDC_RADIO1, m_gender);
  6. }
  7. BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
  8. //关联按钮点击
  9. ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication2Dlg::OnBnClickedButton1)
  10. END_MESSAGE_MAP()
  11. //点击按钮弹出选中信息
  12. void CMFCApplication2Dlg::OnBnClickedButton1()
  13. {
  14. //将选中的信息更新到变量m_gender
  15. UpdateData(TRUE);
  16. switch (m_gender)
  17. {
  18. case 0:
  19. //mfc 默认第一个单选按钮是0
  20. AfxMessageBox("选中0");
  21. break;
  22. case 1:
  23. //mfc 默认第二个单选按钮是1
  24. AfxMessageBox("选中1");
  25. break;
  26. default:
  27. AfxMessageBox("选中default");
  28. break;
  29. }
  30. }

CheckBox

在这里插入图片描述

MFC允许每个复选框关联一个BOOL类型的变量。

  1. void CMFCApplication2Dlg::DoDataExchange(CDataExchange* pDX)
  2. {
  3. CDialogEx::DoDataExchange(pDX);
  4. DDX_Check(pDX, IDC_CHECK1, m_swing);
  5. DDX_Check(pDX, IDC_CHECK2, m_running);
  6. DDX_Check(pDX, IDC_CHECK3, m_basketball);
  7. }
  8. BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
  9. //关联按钮点击事件
  10. ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication2Dlg::OnBnClickedButton1)
  11. END_MESSAGE_MAP()
  12. //点击按钮弹出选中信息
  13. void CMFCApplication2Dlg::OnBnClickedButton1()
  14. {
  15. //将选中的信息更新到变量m_swing m_running m_running
  16. UpdateData(TRUE);
  17. char out[99];
  18. wsprintf(out,"选中游泳 %s 选中跑步 %s 选中篮球 %s", m_swing?"是":"否", m_running ? "是" : "否", m_basketball ? "是" : "否");
  19. AfxMessageBox(out);
  20. }

在这里插入图片描述

Combo Box

下拉框

在这里插入图片描述
我们看下如何添加选项

  1. //点击按钮弹出选中信息
  2. void CMFCApplication2Dlg::OnBnClickedButton1()
  3. {
  4. //给下拉框添加选项
  5. combo.AddString("君岛安娜");
  6. combo.AddString("泷泽萝拉");
  7. combo.AddString("小泽玛丽");
  8. combo.AddString("波多野结衣");
  9. }

在这里插入图片描述

  1. void CMFCApplication2Dlg::OnBnClickedButton2()
  2. {
  3. //获取当前选中的下标indics
  4. int currentIndex = combo.GetCurSel();
  5. char name[99];
  6. CString ms;
  7. //选中的下标的文本
  8. combo.GetLBText(currentIndex, ms);
  9. wsprintf(name, "选中的下标%d %s ", currentIndex, ms);
  10. AfxMessageBox(name);
  11. }

ListControl

在这里插入图片描述

  1. //添加选项
  2. void CMyMFCSubProcedureDlg::OnBnClickedButton1()
  3. {
  4. //添加表头
  5. list_ctl.InsertColumn(0, "ID");
  6. list_ctl.InsertColumn(1, "姓名");
  7. list_ctl.InsertColumn(2,"性别");
  8. //设置列宽度为标题栏内容所占宽度
  9. list_ctl.SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER);
  10. list_ctl.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
  11. list_ctl.SetColumnWidth(2, LVSCW_AUTOSIZE_USEHEADER);
  12. 根据表头类获取列数自动调整列宽
  13. //CHeaderCtrl* ctl=list_ctl.GetHeaderCtrl();
  14. //for (size_t i = 0; i < ctl->GetItemCount(); i++)
  15. //{
  16. // list_ctl.SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);
  17. //}
  18. //
  19. //固定给某行的第一列插入数据,当然可以用SetItemText
  20. list_ctl.InsertItem(0, "1001");
  21. list_ctl.InsertItem(1, "1002");
  22. list_ctl.InsertItem(2,"1003");
  23. //给第0行插入数据
  24. list_ctl.SetItemText(0, 0, "ID哦");
  25. list_ctl.SetItemText(0, 1, "蜡笔小新");
  26. list_ctl.SetItemText(0,2,"男");
  27. //给第1行插入数据
  28. list_ctl.SetItemText(1, 0, "ID不知道");
  29. list_ctl.SetItemText(1, 1, "波多野结衣");
  30. list_ctl.SetItemText(1, 2, "男");
  31. //修改风格
  32. list_ctl.SetExtendedStyle(list_ctl.GetExtendedStyle() | LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
  33. }
  34. //获取选中
  35. void CMyMFCSubProcedureDlg::OnBnClickedButton2()
  36. {
  37. //选中第几行
  38. int index = list_ctl.GetSelectionMark();
  39. CString cid = list_ctl.GetItemText(index, 0);
  40. CString cName = list_ctl.GetItemText(index, 1);
  41. CString cGender = list_ctl.GetItemText(index,2);
  42. char out[88];
  43. wsprintf(out,"cid %s %s %s 选中第几行 %d", cid , cName,cGender,index);
  44. AfxMessageBox(out);
  45. }
  46. //删除
  47. void CMyMFCSubProcedureDlg::OnBnClickedButton3()
  48. {
  49. //选中第几行
  50. int index = list_ctl.GetSelectionMark();
  51. //list_ctl.DeleteAllItems();
  52. list_ctl.DeleteItem(index);
  53. }

发表评论

表情:
评论列表 (有 0 条评论,173人围观)

还没有评论,来说两句吧...

相关阅读

    相关 微信小程序UI

    开发微信小程序的过程中,选择一款好用的组件库,可以达到事半功倍的效果。自从微信小程序面世以来,不断有一些开源组件库出来,下面5款就是排名比较靠前,用户使用量与关注度比较高的小程