程序说明:16个组合框拥有17个相同数据项,"------"数据项为空数据项,组合框起始的当前项是空数据项。每个组合框任意选择空数据项或其余16个数据项的任一项,将选择的数据项属于第几个组合框写入当前项目目录下test.ini文件,如多个组合框选择的是相同的数据项,数据项写入的位置是最后的组合框,没有选择到的数据项位置全部是-1。
项目是基于我前期的博客文章《MFC多个组合框动态生成相同数据项实例》https://blog.csdn.net/weixin_42350092/article/details/130181265?spm=1001.2014.3001.5502spm=1001.2014.3001.5502
在《MFC多个组合框动态生成相同数据项实例》的资源视图对话框上添加一个写入ini文件按钮。
1、在OnInitDialog()函数上面添加全局变量代码:
int m_CountGetCurSel[16];//索引号
UINT m_CountComboID[16]=//控件ID号
{
IDC_COMB1,
IDC_COMB2,
IDC_COMB3,
IDC_COMB4,
IDC_COMB5,
IDC_COMB6,
IDC_COMB7,
IDC_COMB8,
IDC_COMB9,
IDC_COMB10,
IDC_COMB11,
IDC_COMB12,
IDC_COMB13,
IDC_COMB14,
IDC_COMB15,
IDC_COMB16,
};
CString COMB_Data[17]={“------”,“信号1”,“信号2”,“信号3”,“信号4”,“信号5”,“信号6”,“信号7”,“信号8”,“信号9”,“信号10”,“信号11”,“信号12”,“信号13”,“信号14”,“信号15”,“信号16”};
2、在OnInitDialog()函数中添加代码:
for (int i=0; i<16; i++)
{
for (int j=0; j<17; j++)
{
((CComboBox*)GetDlgItem(m_CountComboID[i]))->AddString(COMB_Data[j]);
((CComboBox*)GetDlgItem(m_CountComboID[i]))->SetCurSel(0);
}
}
3、在写入ini文件按钮单击事件代码:
void CCombTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
UpdateData(FALSE);
CString NO_Combox[16];//当前索引号
CString strTemp[16];//数据项名称
CString str;
char strBuff[256];
CString strFilePath;
strFilePath=GetCurrentDirectory(256,strBuff); //获取当前路径
strFilePath.Format("%s//Test.ini",strBuff);
for (int m=1; m<17; m++)
{
WritePrivateProfileString("输入信号",COMB_Data[m],"-1",strFilePath);
}
for (int n=0; n<16; n++)
{
((CComboBox*)GetDlgItem(m_CountComboID[n]))->GetWindowText(strTemp[n]);//当前内容
NO_Combox[n].Format(_T("%d"), n);
if (strTemp[n]!="------")
{
WritePrivateProfileString("输入信号",strTemp[n],NO_Combox[n],strFilePath);
}
}
}
运行程序在组合框中选择数据项将项目下生成test.ini文件。
源码下载
https://blog.csdn.net/weixin_42350092/article/details/130181935?spm=1001.2014.3001.5502