我做了一个Dialog,里面有一个Edit控件,和一个Combox控件,当我在Edit控件里输入一个名字,单击保存时可以把这个名字加到Combox里,但是当我下次运行程序的时候,还想保存的名字能在Combox里面,我遇到了以下问题
要是想下次运行程序的时候这些保存的名字还会出现在Combox里,必须把这些名字保存到一个文件中如name.ini,假设我保存了三个名字,我保存的形式是这样的
[Name]
name1=我
name2=你
name3=他
问题1:我觉得我的保存的形式不好,可不可以直接保存为名字省去前面的东西:如下
[Name]
我
你
他
问题2:如果知道三个名字,我读取的时候,直接读取变量名然后AddString()即可,但是我不知道保存有几个文件名字,读的时候怎么能确保把[Name]所有的名字都读到呢?
问题3:如果在Edit里输入重名时怎么提醒他?因为名字都保存在文件里,我怎么判断是不是重名呢?
要是想下次运行程序的时候这些保存的名字还会出现在Combox里,必须把这些名字保存到一个文件中如name.ini,假设我保存了三个名字,我保存的形式是这样的
[Name]
name1=我
name2=你
name3=他
问题1:我觉得我的保存的形式不好,可不可以直接保存为名字省去前面的东西:如下
[Name]
我
你
他
问题2:如果知道三个名字,我读取的时候,直接读取变量名然后AddString()即可,但是我不知道保存有几个文件名字,读的时候怎么能确保把[Name]所有的名字都读到呢?
问题3:如果在Edit里输入重名时怎么提醒他?因为名字都保存在文件里,我怎么判断是不是重名呢?
解决方案 »
- VC++实现位图显示透明效果
- DllMain的第一个参数HINSTANCE hinstDLL是in还是out
- 重开100分帖,讨论绘制快速走动的仪表时,怎样降低CPU占用率的方法
- CListCtrl单击事件获得行号的问题
- 线程函数中怎么调用某个类中(比如视图类)的函数?
- 关于语句频度的问题,请高手指教
- excel中右键弹出菜单,调用哪个API?
- 由于小弟要去北京不知道哪里有卖书的!请前辈们推荐一下在中关村卖VC书的好地方!多谢!多谢!
- 一个很多人感兴趣的问题,高分哟 :)
- cool button question
- 类似如QQ的聊天消息窗口(Dialog),我想换成View视图该怎么去实现?
- 如何返回原来的对话框
只保存名字的形式不是合法的INI文件格式问题2
首先在你原来的基础上有个实现简单的方法,你可以保存当前文件中的名字数目
读取时先读取Count字段,然后用for循环读取后面的名字[Name]
Count=3
name1=A
name2=B
name3=C当然也有不需要增加Count字段的方法,就是用GetPrivateProfileSection来读取整个Section,这个需要自己解析每个值。问题3
你的程序运行之后,你已经将文件名都读入CComboBox中了,你直接判断CComboBox中是否由重复不就行了
void CxxDlg::Load()
{
LPCTSTR szIniFile = _T("C:\\abc.ini"); int nCount;
nCount = GetPrivateProfileInt(_T("Name"), _T("Count"), 0, szIniFile); CString szKey;
TCHAR szValue[256];
for(int i = 0; i < nCount; i++)
{
szKey.Format(_T("name%d"), i);
GetPrivateProfileString(_T("Name"), szKey, _T(""), szValue, sizeof(szValue), szIniFile); m_cbComboBox.AddString(szValue);
}
}void CxxDlg::Save()
{
LPCTSTR szIniFile = _T("C:\\abc.ini");
CString szKey;
TCHAR szValue[256];
int nCount = m_cbComboBox.GetCount();
_stprintf(szValue, _T("%d"), nCount);
WritePrivateProfileString(_T("Name"), _T("Count"), szValue, szIniFile);
for(int i = 0; i < nCount; i++)
{
szKey.Format(_T("name%d"), i);
m_cbComboBox.GetLBText(i, szValue); WritePrivateProfileString(_T("Name"), szKey, szValue, szIniFile);
}
}