最近在看BlueCoder的博客专栏《Win32基础技术》,所以有一段时间没写关于控件的博客了,今天忽然想起来我曾经用两种控件分别实现过城市管理系统,我首先用了ComboBox控件,做完后过了一段时间我又用ListBox控件做了一个
废话不多说了,先来看看效果
程序界面 选择城市
显示城市 增加城市
错误提示 警告提醒
在写代码前需要将程序搭成下图所示的界面
修改控件的ID
控件名称 |
控件的ID |
ComboBox控件 |
IDC_COMBO1 |
城市显示框 |
IDC_SHOW |
城市添加框 |
IDC_EDIT1 |
城市添加按钮 |
IDC_ADD |
城市显示按钮 |
IDC_VIEW |
城市删除按钮 |
IDC_DELETE |
城市查找框 |
IDC_EDIT2 |
城市查找按钮 |
IDC_SEARCH |
展示完功能后就开始写代码
这个程序中的最基本的功能是添加城市
添加城市到ComboBox控件中用ComboBox_InsertString函数
函数参数
HWND hwndCtl, ComboBox控件的句柄
int index, 当前索引
LPCSTR lpsz ComboBox控件中添加的字符串
添加城市
//得到ComboBox控件的句柄 HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1); //添加城市 ComboBox_InsertString(hwndCombo1,-1,TEXT("北京市")); ComboBox_InsertString(hwndCombo1,-1,TEXT("天津市")); ComboBox_InsertString(hwndCombo1,-1,TEXT("上海市")); ComboBox_InsertString(hwndCombo1,-1,TEXT("深圳市")); ComboBox_InsertString(hwndCombo1,-1,TEXT("南京市")); ComboBox_InsertString(hwndCombo1,-1,TEXT("广州市")); ComboBox_InsertString(hwndCombo1,-1,TEXT("海口市")); ComboBox_InsertString(hwndCombo1,-1,TEXT("南昌市")); ComboBox_InsertString(hwndCombo1,-1,TEXT("新余市"));
从添加框中添加城市
//得到ComboBox控件的句柄 HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1); //得到编辑框中的字符串 GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str)); //字符串的大小 int len = strlen(str); //当没输入添加的城市时 if(0 == len) { MessageBox(hwnd,TEXT("请输入一个城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION); } else { //添加城市 ComboBox_InsertString(hwndCombo1,-1,str); TCHAR cmd[256]; wsprintf(cmd,"%s添加成功",str); MessageBox(hwnd,cmd,TEXT("提示"),MB_OK); }
删除城市
//得到ComboBox控件的句柄 HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1); //得到城市的索引 int CurSel = ComboBox_GetCurSel(hwndCombo1); if(-1== CurSel)//如果没选择城市 { MessageBox(hwnd,TEXT("请选择一个需要删除的城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION); } else { TCHAR str1[256]; TCHAR str2[256]; //得到选定的城市 ComboBox_GetLBText(hwndCombo1,CurSel,str1); wsprintf(str2,"%s删除成功",str1); //删除城市 ComboBox_DeleteString(hwndCombo1,CurSel); MessageBox(hwnd,str2,TEXT("提示"),MB_OK); }
查找城市
TCHAR str1[256]; TCHAR str2[256]; //字符串清零 ZeroMemory(str1,sizeof(str1)); SetDlgItemText(hwnd,IDC_SHOW,TEXT("")); //得到ComboBox控件的句柄 HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1); //得到Combobox控件中有多少个城市 int Count = ComboBox_GetCount(hwndCombo1); //得到对话框中的字符串 GetDlgItemText(hwnd,IDC_EDIT2,str1,sizeof(str1)); //得到字符串的大小 int len = strlen(str1); int flag = 0;//标示查找 if(0 == len) { MessageBox(hwnd,TEXT("请输入一个城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION); } else { for(int i = 0;i <Count ; i++) { ComboBox_GetLBText(hwndCombo1,i,str2); if(0 == strncmp(str1,str2,len)) { flag = 1;//找到了 //显示城市 SetDlgItemText(hwnd,IDC_SHOW,str2); wsprintf(str1,"找到了%s",str2); MessageBox(hwnd,str1,TEXT("提示"),MB_OK); } } if(0 == flag) { MessageBox(hwnd,TEXT("没找到"),TEXT("提示"),MB_OK | MB_ICONERROR); } }
显示城市
//得到ComboBox控件的句柄 HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1); //得到当前的索引 int CurSel = ComboBox_GetCurSel(hwndCombo1); if(-1 == CurSel) { MessageBox(hwnd,TEXT("请选择一个城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION); } else { TCHAR str[256]; //得到城市 ComboBox_GetLBText(hwndCombo1,CurSel,str); TCHAR cmd[256]; wsprintf(cmd,"你选择了%s",str); MessageBox(hwnd,cmd,TEXT("提示"),MB_OK); //在对话框中显示城市 SetDlgItemText(hwnd,IDC_SHOW,str); }
通过上面的代码克制我在程序中还增加了错误验证和提示,这使得程序更有可行性
点击下载城市管理系统