【Windows程序设计可视化控件练习】创建一个编辑框控件,可以输入姓名;创建一个下拉列表可以选择科目(语文、数学和英语);创建一个组合框单选选择成绩(A,B,C,D)。


创建一个编辑框控件,可以输入姓名;创建一个下拉列表可以选择科目(语文、数学和英语);创建一个组合框单选选择成绩(A,B,C,D)。创建一个单选列表框,一个添加成绩记录的按钮,可以在列表框中最后一行添加一行成绩记录;一个插入成绩记录的按钮,可以在选定的列表框的上面一行插入一行成绩记录。在列表框中双击某一项,可以删除这行成绩记录。

1、首先创建如下控件

2、为控件设置好属性和ID值

在这里插入图片描述

3、初始化对话框
BOOL CMyDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.
	CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
    pList->InsertColumn(0,"姓名",0,100);
    pList->InsertColumn(1,"科目",0,100);
    pList->InsertColumn(2,"成绩",0,100);
    
	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	return TRUE;  // return TRUE  unless you set the focus to a control
}
4、为添加成绩按钮添加事件处理函数
void CMyDlg::OnAdd() 
{
	// TODO: Add your control notification handler code here
	CString m_name,m_sub,m_score;
    GetDlgItemText(IDC_NAME,m_name);
	GetDlgItem(IDC_SUBJECT)->GetWindowText(m_sub);
	GetDlgItem(IDC_SCORE)->GetWindowText(m_score);
    CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
    int nCount = pList->GetItemCount();
    pList->InsertItem(nCount,m_name);
    pList->SetItemText(nCount,1,m_sub);
    pList->SetItemText(nCount,2,m_score);
	
}
5、为插入成绩按钮添加事件处理函数
void CMyDlg::OnUpdate() 
{
	// TODO: Add your control notification handler code here

    POSITION pos = m_list.GetFirstSelectedItemPosition();
    if(!pos)
    {
        AfxMessageBox("请选择一行再添加!");
        return;
    }
    int nSel=m_list.GetNextSelectedItem(pos);
	CString m_name,m_sub,m_score;
    GetDlgItemText(IDC_NAME,m_name);
	GetDlgItem(IDC_SUBJECT)->GetWindowText(m_sub);
	GetDlgItem(IDC_SCORE)->GetWindowText(m_score);
    CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
	pList->InsertItem(nSel,m_name);
    pList->SetItemText(nSel,1,m_sub);
    pList->SetItemText(nSel,2,m_score);
}
6、为List控件添加双击的事件处理函数

在这里插入图片描述

void CMyDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
		 POSITION pos = m_list.GetFirstSelectedItemPosition();
    if(!pos)
    {
        AfxMessageBox("请选择一行再删除!");
        return;
    }
    int nSel=m_list.GetNextSelectedItem(pos);
    CString str=m_list.GetItemText(nSel,0);
    str="确认删除" + str + "号信息吗?";
    if(AfxMessageBox(str,MB_YESNO)==IDYES)
        m_list.DeleteItem(nSel);

	
	*pResult = 0;
}
7、最后实现效果

在这里插入图片描述
在这里插入图片描述


版权声明:本文为qq_50533078原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。