MFC 常用UI组件使用
Button
双击即可自动创建一个点击事件处理函数。
BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication2Dlg::OnBnClickedButton1)
END_MESSAGE_MAP()
void CMFCApplication2Dlg::OnBnClickedButton1()
{
}
Radio
关联int
变量
void CMFCApplication2Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
//关联变量和单选框
DDX_Radio(pDX, IDC_RADIO1, m_gender);
}
BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
//关联按钮点击
ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication2Dlg::OnBnClickedButton1)
END_MESSAGE_MAP()
//点击按钮弹出选中信息
void CMFCApplication2Dlg::OnBnClickedButton1()
{
//将选中的信息更新到变量m_gender
UpdateData(TRUE);
switch (m_gender)
{
case 0:
//mfc 默认第一个单选按钮是0
AfxMessageBox("选中0");
break;
case 1:
//mfc 默认第二个单选按钮是1
AfxMessageBox("选中1");
break;
default:
AfxMessageBox("选中default");
break;
}
}
CheckBox
MFC
允许每个复选框关联一个BOOL
类型的变量。
void CMFCApplication2Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Check(pDX, IDC_CHECK1, m_swing);
DDX_Check(pDX, IDC_CHECK2, m_running);
DDX_Check(pDX, IDC_CHECK3, m_basketball);
}
BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
//关联按钮点击事件
ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication2Dlg::OnBnClickedButton1)
END_MESSAGE_MAP()
//点击按钮弹出选中信息
void CMFCApplication2Dlg::OnBnClickedButton1()
{
//将选中的信息更新到变量m_swing m_running m_running
UpdateData(TRUE);
char out[99];
wsprintf(out,"选中游泳 %s 选中跑步 %s 选中篮球 %s", m_swing?"是":"否", m_running ? "是" : "否", m_basketball ? "是" : "否");
AfxMessageBox(out);
}
Combo Box
下拉框
我们看下如何添加选项
//点击按钮弹出选中信息
void CMFCApplication2Dlg::OnBnClickedButton1()
{
//给下拉框添加选项
combo.AddString("君岛安娜");
combo.AddString("泷泽萝拉");
combo.AddString("小泽玛丽");
combo.AddString("波多野结衣");
}
void CMFCApplication2Dlg::OnBnClickedButton2()
{
//获取当前选中的下标indics
int currentIndex = combo.GetCurSel();
char name[99];
CString ms;
//选中的下标的文本
combo.GetLBText(currentIndex, ms);
wsprintf(name, "选中的下标%d %s ", currentIndex, ms);
AfxMessageBox(name);
}
ListControl
//添加选项
void CMyMFCSubProcedureDlg::OnBnClickedButton1()
{
//添加表头
list_ctl.InsertColumn(0, "ID");
list_ctl.InsertColumn(1, "姓名");
list_ctl.InsertColumn(2,"性别");
//设置列宽度为标题栏内容所占宽度
list_ctl.SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER);
list_ctl.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
list_ctl.SetColumnWidth(2, LVSCW_AUTOSIZE_USEHEADER);
根据表头类获取列数自动调整列宽
//CHeaderCtrl* ctl=list_ctl.GetHeaderCtrl();
//for (size_t i = 0; i < ctl->GetItemCount(); i++)
//{
// list_ctl.SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);
//}
//
//固定给某行的第一列插入数据,当然可以用SetItemText
list_ctl.InsertItem(0, "1001");
list_ctl.InsertItem(1, "1002");
list_ctl.InsertItem(2,"1003");
//给第0行插入数据
list_ctl.SetItemText(0, 0, "ID哦");
list_ctl.SetItemText(0, 1, "蜡笔小新");
list_ctl.SetItemText(0,2,"男");
//给第1行插入数据
list_ctl.SetItemText(1, 0, "ID不知道");
list_ctl.SetItemText(1, 1, "波多野结衣");
list_ctl.SetItemText(1, 2, "男");
//修改风格
list_ctl.SetExtendedStyle(list_ctl.GetExtendedStyle() | LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
}
//获取选中
void CMyMFCSubProcedureDlg::OnBnClickedButton2()
{
//选中第几行
int index = list_ctl.GetSelectionMark();
CString cid = list_ctl.GetItemText(index, 0);
CString cName = list_ctl.GetItemText(index, 1);
CString cGender = list_ctl.GetItemText(index,2);
char out[88];
wsprintf(out,"cid %s %s %s 选中第几行 %d", cid , cName,cGender,index);
AfxMessageBox(out);
}
//删除
void CMyMFCSubProcedureDlg::OnBnClickedButton3()
{
//选中第几行
int index = list_ctl.GetSelectionMark();
//list_ctl.DeleteAllItems();
list_ctl.DeleteItem(index);
}
还没有评论,来说两句吧...