首页 > 其他 > 详细

城市管理系统(LIstBox控件)

时间:2014-02-28 12:24:34      阅读:543      评论:0      收藏:0      [点我收藏+]

我在上一篇博客中介绍了使用ComboBox控件实现城市管理系统,这篇ListBox控件实现城市管理系统作为上一篇的姊妹篇,可以进行对比,从而发现其中的优缺点

和上一篇一样先搭建图形界面和修改ID

首先搭建成如下图所示的界面:

bubuko.com,布布扣



修改控件的ID

控件的名字

控件的ID

显示找到的城市

IDC_STATIC

显示城市编辑框

IDC_SHOW

ListBox控件

IDC_LIST1

城市显示按钮

IDC_VIEW

城市删除按钮

IDC_DELETE

城市添加框

IDC_EDIT1

城市添加按钮

IDC_ADD

城市查找框

IDC_EDIT2

城市查找按钮

IDC_FIND


完成了以上的工作后就开始写代码:
程序初始化时添加下面的代码使得打开程序就会显示城市

	//得到ListBox控件的句柄
	HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

	//添加城市
	ListBox_InsertString(hwndList1,-1,TEXT("北京市"));
	ListBox_InsertString(hwndList1,-1,TEXT("天津市"));
	ListBox_InsertString(hwndList1,-1,TEXT("上海市"));
	ListBox_InsertString(hwndList1,-1,TEXT("重庆市"));
	ListBox_InsertString(hwndList1,-1,TEXT("南昌市"));
	ListBox_InsertString(hwndList1,-1,TEXT("新余市"));
	ListBox_InsertString(hwndList1,-1,TEXT("杭州市"));
	ListBox_InsertString(hwndList1,-1,TEXT("长沙市"));
	ListBox_InsertString(hwndList1,-1,TEXT("海口市"));
	ListBox_InsertString(hwndList1,-1,TEXT("台北市"));
	ListBox_InsertString(hwndList1,-1,TEXT("南宁市"));
	ListBox_InsertString(hwndList1,-1,TEXT("沈阳市"));


添加城市

				//得到ListBox控件的句柄
				HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

				TCHAR str[256];

				//字符串清零
				ZeroMemory(str,sizeof(str));

				//得到编辑框中的字符串
				GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));

				//得到字符串的大小
				int len = strlen(str);

				if(0 == len)//当编辑框中没有字符串时
				{
					MessageBox(hwnd,TEXT("请输入你需要添加的城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION);
				}
				else
				{
					//添加城市
					ListBox_InsertString(hwndList1,-1,str);
					
					MessageBox(hwnd,TEXT("添加成功"),TEXT("提示"),MB_OK);
				}


删除城市

   /*得到控件的句柄*/
			HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

			//得到选定的项
			int CurSel = ListBox_GetCurSel(hwndList1);

			if(-1 == CurSel)//当没找到城市时
			{
				MessageBox(hwnd,TEXT("请选择你要删除的城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION);
			}
			else
			{
				TCHAR str1[256];//得到选定的城市

				//得到选定的城市
				ListBox_GetText(hwndList1,CurSel,str1);

				TCHAR str2[256];

				wsprintf(str2,"你已成功删除了%s",str1);

				//删除选定的城市
				ListBox_DeleteString(hwndList1,CurSel);/*删除所选的项*/

				MessageBox(hwnd,str2,TEXT("提示"),MB_OK);
			}

查找城市:

			TCHAR str1[256];
				TCHAR str2[256];

				int flag = 0;//标志位

				//得到编辑框中的字符串
				GetDlgItemText(hwnd,IDC_EDIT2,str1,sizeof(str1));

				//得到字符串的长度
				int len = strlen(str1);

				if(0 == len)//当编辑框中没有字符串时
				{
					MessageBox(hwnd,TEXT("请输入一个城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION);
				}
				else
				{
					//得到ListBox控件的句柄
					HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

					//得到ListBox控件中城市的个数
					int Count = ListBox_GetCount(hwndList1);

					//得到编辑框中的字符串
					GetDlgItemText(hwnd,IDC_EDIT2,str1,sizeof(str1));

					for(int i = 0; i < Count; i++)
					{
						//得到ListBox控件中的城市
						ListBox_GetText(hwndList1,i,str2);

						//当两个城市相同时
						if(0 == strncmp(str1,str2,len))
						{
							flag = 1;//标志找到了

							//得到城市的索引
							ListBox_SetCurSel(hwndList1,i);

							TCHAR temp[256];

							//d得到找到的城市
							ListBox_GetText(hwndList1,i,temp);

							//将城市在编辑框中显示
							SetDlgItemText(hwnd,IDC_SHOW,temp);

							MessageBox(hwnd,TEXT("找到了"),TEXT("提示"),MB_OK);
							
							return ;
						}
					}

					if(0 == flag)//当没找到城市时
					{
						MessageBox(hwnd,TEXT("没找到"),TEXT("提示"),MB_OK | MB_ICONERROR);
					}
				}


显示城市

	//得到ListBox控件的句柄
				HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

				//得到选定的城市的索引
				int CurSel = ListBox_GetCurSel(hwndList1);

				if(-1 == CurSel)//当没选城市时
				{
					MessageBox(hwnd,TEXT("请选择一个城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION);
				}
				else
				{
					TCHAR temp[256];

					//得到选定的城市
				    ListBox_GetText(hwndList1,CurSel,temp);

					TCHAR cmd[256];

					wsprintf(cmd,"你选择的是%s",temp);

					MessageBox(hwnd,cmd,TEXT("提示"),MB_OK);
				
					//在编辑框中显示选定的城市
				    SetDlgItemText(hwnd,IDC_SHOW,temp);
				}


在ListBox控件上双击

		if(LBN_DBLCLK == codeNotify)//双击
					{
						//得到ListBox控件的句柄
						HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

						//得到选定的城市的索引
						int CurSel = ListBox_GetCurSel(hwndList1);

						TCHAR temp[256];

						//得到选定的城市
						ListBox_GetText(hwndList1,CurSel,temp);
						
						//显示选定的城市
						SetDlgItemText(hwnd,IDC_SHOW,temp);
					}


通过这篇博客和上一篇博客比较发现ListBox控件和ComboBox控件的用法差不多,大同小异,只是函数的名的前半部分不同,如插入城市ComboBox控件中使用ComboBox_InsertString  在ListBox控件中用ListBox_InsertString函数,而在ListBox控件中还有一个特点,可以在ListBox控件中单击左键、单击右键、双击,在音乐播放器中的应用非常能


程序全部代码

#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"


BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
		HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }

    return FALSE;
}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
	//得到ListBox控件的句柄
	HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

	//添加城市
	ListBox_InsertString(hwndList1,-1,TEXT("北京市"));
	ListBox_InsertString(hwndList1,-1,TEXT("天津市"));
	ListBox_InsertString(hwndList1,-1,TEXT("上海市"));
	ListBox_InsertString(hwndList1,-1,TEXT("重庆市"));
	ListBox_InsertString(hwndList1,-1,TEXT("南昌市"));
	ListBox_InsertString(hwndList1,-1,TEXT("新余市"));
	ListBox_InsertString(hwndList1,-1,TEXT("杭州市"));
	ListBox_InsertString(hwndList1,-1,TEXT("长沙市"));
	ListBox_InsertString(hwndList1,-1,TEXT("海口市"));
	ListBox_InsertString(hwndList1,-1,TEXT("台北市"));
	ListBox_InsertString(hwndList1,-1,TEXT("南宁市"));
	ListBox_InsertString(hwndList1,-1,TEXT("沈阳市"));

    return TRUE;
}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_DELETE://删除城市
		{
            /*得到控件的句柄*/
			HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

			//得到选定的项
			int CurSel = ListBox_GetCurSel(hwndList1);

			if(-1 == CurSel)//当没找到城市时
			{
				MessageBox(hwnd,TEXT("请选择你要删除的城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION);
			}
			else
			{
				TCHAR str1[256];//得到选定的城市

				//得到选定的城市
				ListBox_GetText(hwndList1,CurSel,str1);

				TCHAR str2[256];

				wsprintf(str2,"你已成功删除了%s",str1);

				//删除选定的城市
				ListBox_DeleteString(hwndList1,CurSel);/*删除所选的项*/

				MessageBox(hwnd,str2,TEXT("提示"),MB_OK);
			}
		}
        break;

		case IDC_ADD://添加城市
			{
				//得到ListBox控件的句柄
				HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

				TCHAR str[256];

				//字符串清零
				ZeroMemory(str,sizeof(str));

				//得到编辑框中的字符串
				GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));

				//得到字符串的大小
				int len = strlen(str);

				if(0 == len)//当编辑框中没有字符串时
				{
					MessageBox(hwnd,TEXT("请输入你需要添加的城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION);
				}
				else
				{
					//添加城市
					ListBox_InsertString(hwndList1,-1,str);
					
					MessageBox(hwnd,TEXT("添加成功"),TEXT("提示"),MB_OK);
				}
			}
			break;

		case IDC_FIND://查找城市
			{
				TCHAR str1[256];
				TCHAR str2[256];

				int flag = 0;//标志位

				//得到编辑框中的字符串
				GetDlgItemText(hwnd,IDC_EDIT2,str1,sizeof(str1));

				//得到字符串的长度
				int len = strlen(str1);

				if(0 == len)//当编辑框中没有字符串时
				{
					MessageBox(hwnd,TEXT("请输入一个城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION);
				}
				else
				{
					//得到ListBox控件的句柄
					HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

					//得到ListBox控件中城市的个数
					int Count = ListBox_GetCount(hwndList1);

					//得到编辑框中的字符串
					GetDlgItemText(hwnd,IDC_EDIT2,str1,sizeof(str1));

					for(int i = 0; i < Count; i++)
					{
						//得到ListBox控件中的城市
						ListBox_GetText(hwndList1,i,str2);

						//当两个城市相同时
						if(0 == strncmp(str1,str2,len))
						{
							flag = 1;//标志找到了

							//得到城市的索引
							ListBox_SetCurSel(hwndList1,i);

							TCHAR temp[256];

							//d得到找到的城市
							ListBox_GetText(hwndList1,i,temp);

							//将城市在编辑框中显示
							SetDlgItemText(hwnd,IDC_SHOW,temp);

							MessageBox(hwnd,TEXT("找到了"),TEXT("提示"),MB_OK);
							
							return ;
						}
					}

					if(0 == flag)//当没找到城市时
					{
						MessageBox(hwnd,TEXT("没找到"),TEXT("提示"),MB_OK | MB_ICONERROR);
					}
				}
			}
			break;

		    case IDC_VIEW://显示城市
			{
				//得到ListBox控件的句柄
				HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

				//得到选定的城市的索引
				int CurSel = ListBox_GetCurSel(hwndList1);

				if(-1 == CurSel)//当没选城市时
				{
					MessageBox(hwnd,TEXT("请选择一个城市"),TEXT("提示"),MB_OK | MB_ICONEXCLAMATION);
				}
				else
				{
					TCHAR temp[256];

					//得到选定的城市
				    ListBox_GetText(hwndList1,CurSel,temp);

					TCHAR cmd[256];

					wsprintf(cmd,"你选择的是%s",temp);

					MessageBox(hwnd,cmd,TEXT("提示"),MB_OK);
				
					//在编辑框中显示选定的城市
				    SetDlgItemText(hwnd,IDC_SHOW,temp);
				}
			}
			break;

			case IDC_LIST1://在ListBox控件上双击
				{
					if(LBN_DBLCLK == codeNotify)//双击
					{
						//得到ListBox控件的句柄
						HWND hwndList1 = GetDlgItem(hwnd,IDC_LIST1);

						//得到选定的城市的索引
						int CurSel = ListBox_GetCurSel(hwndList1);

						TCHAR temp[256];

						//得到选定的城市
						ListBox_GetText(hwndList1,CurSel,temp);
						
						//显示选定的城市
						SetDlgItemText(hwnd,IDC_SHOW,temp);
					}
				}
				break;
        default:
		break;
    }
}

void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}


说明LIstBox控件的这个特性

运行结果:                                                                    显示城市

bubuko.com,布布扣          bubuko.com,布布扣


错误处理                                                                       双击显示城市

bubuko.com,布布扣            bubuko.com,布布扣


点击下载城市管理系统



城市管理系统(LIstBox控件),布布扣,bubuko.com

城市管理系统(LIstBox控件)

原文:http://blog.csdn.net/u010105970/article/details/20035651

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!