GetCurSel()怎么定义的
时间: 2024-02-27 15:59:20 浏览: 32
GetCurSel()是一个在Windows API中定义的函数,用于获取指定窗口控件(如列表框、组合框等)中当前选中项的索引。其定义如下:
```c++
int GetCurSel(HWND hWnd);
```
其中,hWnd为指向窗口控件的句柄。函数返回当前选中项的索引,如果没有选中任何项,则返回LB_ERR(-1)的值。
相关问题
void CSETPRO::OnSelchangeList1() { // TODO: 在此添加控件通知处理程序代码 int nSel; nSel = mList1.GetCurSel(); CString s; mList1.GetText(nSel, s); UpdateData(TRUE); SetDlgItemText(IDC_EDIT3 + mRadio1, s); }
这段代码是一个 MFC 应用程序中的一个消息处理函数,用于处理列表框控件的选择改变事件。在这个函数中,首先获取当前选择项的索引,然后通过索引获取对应的文本内容。接着,调用 UpdateData(TRUE) 函数将控件的数据与对应的成员变量进行更新。最后,使用 SetDlgItemText 函数将文本内容更新到指定的编辑框控件上。
需要注意的是,这段代码中的 mRadio1 和 IDC_EDIT3 是未定义的变量或标识符,可能是在其他地方定义的。
void CFindDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 m_Listbox.ResetContent(); //清空列表框的内容 CString name; //获取当前选中项 int index = m_comboName.GetCurSel(); //获取组合框当前内容 m_comboName.GetLBText(index, name); CInfoFile file; file.ReadDocline(); for (list<stu>::iterator it = file.ls.begin(); it != file.ls.end(); it++) { CStringA str; char* strname; str = name; //CString 转CStringA strname = str.GetBuffer();//CString 转为char * if (it->name == strname) { const char* szID = "学号:"; const char* szName = "姓名:"; const char* szAge = "年龄:"; const char* szGrade = "成绩:"; CString strID(szID), strName(szName), strAge(szAge), strGrade(szGrade); CString str; str.Format(_T("%d"), it->id); str = strID + str + _T("\r\n"); m_Listbox.AddString(str); str = CString(it->name.c_str()); str = strName + str + _T("\r\n"); m_Listbox.AddString(str); str.Format(_T("%d"), it->age); str = strAge + str + _T("\r\n"); m_Listbox.AddString(str); str.Format(_T("%d"), it->grade); str = strGrade + str + _T("\r\n"); m_Listbox.AddString(str); } } }为什么输出在列表框内的内容顺序是倒着的,先输出成绩最后输出学号
这段代码中,每次添加字符串到列表框中时,都是将新的字符串添加到了列表框的末尾。所以最终输出的顺序是按照添加的顺序倒序排列的,因为先添加的字符串会在后面。
如果希望按照一定的顺序输出字符串,可以将字符串先存储到一个数组或者列表中,然后再按照需要的顺序添加到列表框中。
比如,可以先定义一个存储字符串的列表:
```
std::vector<CString> strList;
```
然后在循环中将需要输出的字符串添加到列表中:
```
strList.push_back(strID + str + _T("\r\n"));
strList.push_back(strName + str + _T("\r\n"));
strList.push_back(strAge + str + _T("\r\n"));
strList.push_back(strGrade + str + _T("\r\n"));
```
最后将列表中的字符串按照需要的顺序添加到列表框中:
```
for (int i = 0; i < strList.size(); i++) {
m_Listbox.AddString(strList[i]);
}
```
这样就可以按照需要的顺序输出字符串了。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)