mfc组合框和列表框combobox和comlist

组合框和列表框

combobox和com

demo

基于对话框,后面全是默认设置

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

一直下一步,完成即可
在这里插入图片描述
在这里插入图片描述

修改二者的id

所有组合框和列表框都有一个索引,都是从0开始的

列表框控件
自带排序

在这里插入图片描述

只要大于-1,就是有当前选中的

扫描二维码关注公众号,回复: 12005158 查看本文章

给两个按钮添加点击事件
在这里插入图片描述

增加按钮
void CdemoDlg::OnBnClickedButton1()
{
    
    
	// TODO: 在此添加控件通知处理程序代码

	CString strText;
	GetDlgItemText(IDC_EDT_TEXT,strText);

	m_cmb_demo.AddString(strText);
	m_cmb_demo.SetCurSel(m_cmb_demo.GetCount()-1);//因为从0开始,所以最后一个是count-1,当前选中的是最后一个,即总个数减一
	//添加后,默认是最后一个
	m_lst_demo.AddString(strText);

	m_lst_demo.SetCurSel(m_lst_demo.GetCount()-1);

}
删除按钮
void CdemoDlg::OnBnClickedButton2()
{
    
    
	// TODO: 在此添加控件通知处理程序代码
	int nIndex;

	//组合框
	nIndex = m_cmb_demo.GetCurSel();//得到索引	//每一项都会有一个索引
	if(nIndex>-1)//说明有选中的项,下标从0开始,没有就是-1;
	{
    
    	
		m_cmb_demo.DeleteString(nIndex);
		if(nIndex<m_cmb_demo.GetCount())
			m_cmb_demo.SetCurSel(nIndex);//设当前选中的为下一项,删除第3项,则下一项又变成了第三项
		else
			m_cmb_demo.SetCurSel(0);	//如果所删的元素后面没有了,那就选中设为第一项	
	}


	//列表框
	nIndex = m_lst_demo.GetCurSel();	//每一项都会有一个索引
	if(nIndex>-1)//说明有选中的项,下标从0开始,没有就是-1;
	{
    
    	
		m_lst_demo.DeleteString(nIndex);
		if(nIndex<m_lst_demo.GetCount())
			m_lst_demo.SetCurSel(nIndex);//设当前选中的为下一项,删除第3项,则下一项又变成了第三项
		else
			m_lst_demo.SetCurSel(0);	//如果所删的元素后面没有了,那就选中设为第一项	
	}


	//删的时候,两边都选


}

防止回车退出


void CdemoDlg::OnOK()
{
    
    
	// TODO: 在此添加专用代码和/或调用基类

	//CDialogEx::OnOK();
}

MFC中Listbox控件的简单使用

	http://blog.sina.com.cn/s/blog_6ca43ae701019h8k.html

    http://blog.csdn.net/winerdaxian/article/details/6560060
    http://www.jizhuomi.com/software/186.html

	https://my.oschina.net/ranjiewen/blog/781090
	https://blog.csdn.net/chengke1866/article/details/100695768?utm_medium=distribute.pc_relevant.none-task-blog-title-3&spm=1001.2101.3001.4242

MFC中listbox控件是为了显示一系列的文本,每个文本占一行。

Listbox控件可以设置属性为:

LBS_CHILD :(默认)子窗口

LBS_Visible :(默认)可视

LBS_Multiplesel :可选择多行

LBS_Extendedsel :可以使用shift或ctrl选择多行

LBS_SORT:所有行按字母顺序进行排序

对Listbox进行操作:

Int listbox.AddString ( LPCTSTR Str) :对listbox的首行添加一个str的文本行,即此时nIndex为0;

Int listbox.DeleteString (uint nIndex) :删除listbox中第nIndex行的文本行,注意nIndex是从0起始的;

int listbox.InsertString (uint xIndex, LPCTSTR Str):在listbox中第nIndex行插入一个str的文本行;

Int listbox.GetCount ( ):获取listbox的行的总数目;

Int listbox.GetCurSel ( ):得到listbox选中的文本行的行数。

Void listbox.ResetContent ( ):清除listbox中的所有数据;

Int listbox.GetCurCount ( ):获取listbox被选中的行的数目;

Int listbox.FindString ( int nstart , LPCTSTR Str ):从第nstart行开始起进行查找,查找Str的文本行;

Int listbox.SelectString ( int nstart, LPCTSTR Str ) :从第nstart行开始,选择包含Str字符串的那一行;

对Listbox中某一行进行双击操作,要产生一个响应函数的步骤:

> 在 BEGIN_MESSAGE_MAP() END_MESSAGE_MAP() 之间添加响应函数的消息映射,如函数名为CDlg::OnLbnDblClk,添加下面代码
ON_LBN_DBLCLK(IDC_LIST1,&C
Dlg::OnLbnDblClk) //IDC_LIST1为listbox控件的ID
然后在CDlg.h中添加函数OnLbnDblClk()的声明 最后在CDlg::OnLbnDblClk()函数中添加实现代码即可

在这里插入图片描述
按照默认即可
在这里插入图片描述
之后双击,会定位到写代码的地方

c++mfclistbox双击事件

void CdemoDlg::OnLbnSelchangeListDemo()
{
    
    
	//对每一行添加事件的方法
//	列表控件可以返回第几行,然后你可以通过行获得行内容。直接点击列表控件可添加点击事件。

	//CString strText1;
	//GetDlgItemText(IDC_LIST_DEMO,strText1);

		MessageBox(_T("点击弹出一个框"));//弹出一个框


//	MessageBox()
	//列表框
	//int nIndex1;
//	nIndex1 = m_lst_demo.GetCurSel();	//每一项都会有一个索引
	//m_lst_demo.DeleteString(nIndex1);

	/*
	if(nIndex1>-1)//说明有选中的项,下标从0开始,没有就是-1;
	{	
		m_lst_demo.DeleteString(nIndex1);
		if(nIndex1<m_lst_demo.GetCount())
			m_lst_demo.SetCurSel(nIndex1);//设当前选中的为下一项,删除第3项,则下一项又变成了第三项
		else
			m_lst_demo.SetCurSel(0);	//如果所删的元素后面没有了,那就选中设为第一项	
	}

	*/
}

猜你喜欢

转载自blog.csdn.net/dd_Mr/article/details/109277766