windows桌面Diaolog对话框程序 ComboBox 控件(添加、删除、查找)

windows桌面对话框程序

ComboBox控件的应用及基本操作

向控件内增加下拉内容(识别要增加的内容,存在则提示,不增加,不存在则直接增加)

删除选中的下拉内容(直接删除选中的下拉项,显示下拉列表中的最后一项)

查找指定内容是否包含在下拉内容里(提示查找情况,如果找到则显示查找项)

ps:

1、确定和取消按钮暂时没有定义动作,只提示是否被按下,取消按钮 退出

2、菜单栏只是样子

运行情况

增加

删除

查找

以下为代码:

代码中有部分来自网络,

但是因为当时为了弄一个Dialog对话框应用程序,

查看了好多页面,不记得是来自哪里了;

不管怎样感谢他的奉献!

我也把我的代码拿出来给需要的人参考,传递分享精神!

#include <Windows.h>
#include <Windowsx.h>
#include "resource.h"
//#include <ctype.h>
// 开启可视化效果
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
//#define _MB_MAP_DIRECT

INT_PTR CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);

HINSTANCE hgInst;
int WINAPI WinMain(HINSTANCE hThisApp, HINSTANCE hPrevApp, LPSTR lpCmd, int nShow)
{
	hgInst = hThisApp;
	HWND hdlg = CreateDialog(hThisApp, MAKEINTRESOURCE(IDD_DIALOGRedMaple), GetDesktopWindow(), (DLGPROC)DlgProc);
	if (!hdlg)
	{
		return 0;
	}
	ShowWindow(hdlg, SW_SHOW);
	UpdateWindow(hdlg);
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return 0;
}
//列表项显示控制
void setcombobox(HWND hDlg)
{
	HWND COMBOBOXJJCC = GetDlgItem(hDlg, IDC_COMBORMSL);
	int count = ComboBox_GetCount(COMBOBOXJJCC);
	if (0 == count)
	{
		SetDlgItemText(hDlg, IDC_COMBORMSL, TEXT(""));//没有列表项,显示空值
		MessageBox(hDlg, TEXT("已经没有列表参数了!"), TEXT("注意"), MB_OK | MB_ICONERROR);
	}
	if (count)
	{
		ComboBox_SetCurSel(COMBOBOXJJCC, count - 1);//显示下拉列表最后一项
	}
}
/*遍历下拉列表,返回值 1 内容存在,显示下拉项,0 不存在*/
INT bianlicombobox(HWND hDlg,TCHAR *str)
{
	HWND COMBOBOXJJCC = GetDlgItem(hDlg, IDC_COMBORMSL);
	int count = ComboBox_GetCount(COMBOBOXJJCC);
	TCHAR strtem[256] = { 0 };
	int i;
	for (i = 0; i < count; i++)
	{
		ComboBox_GetLBText(COMBOBOXJJCC, i, strtem);
		if (!lstrcmp(str, strtem))
		{
			ComboBox_SetCurSel(COMBOBOXJJCC, i);
			return 1;
		}
	}
		return 0;
}



INT_PTR CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg)
	{
	case WM_INITDIALOG:
		// 设置对话框的图标
	{
		SendMessage(hDlg, WM_SETICON, IDI_ICONRM, (LPARAM)LoadIcon(hgInst, MAKEINTRESOURCE(IDC_EDIT1)));	
	}
	break;
	case WM_COMMAND:
		switch(wParam)
		{
			case IDC_BUTTONADD://增加下拉项
			{
				TCHAR str[256];
				GetDlgItemText(hDlg, IDC_EDITADD, str, sizeof(str));
				int i = bianlicombobox(hDlg, str);
				if (i)//存在则提示,不添加
				{
					MessageBox(hDlg, TEXT("下拉项中已经存在的内容"), TEXT("注意"), MB_OK | MB_ICONHAND);	
				}
				else//不存在则添加
				{
					HWND COMBOBOXJJCC = GetDlgItem(hDlg, IDC_COMBORMSL);
					ComboBox_InsertString(COMBOBOXJJCC, -1, str);
					SetDlgItemText(hDlg, IDC_EDITADD, TEXT(""));//增加内容清空
					setcombobox(hDlg);
				}
				
			}
			break;
			case IDC_BUTTONDEL://删除下拉项
			{
				HWND COMBOBOXJJCC = GetDlgItem(hDlg, IDC_COMBORMSL);
				int RMcursel = ComboBox_GetCurSel(COMBOBOXJJCC);
				ComboBox_DeleteString(COMBOBOXJJCC, RMcursel);
				setcombobox(hDlg);
			}
			break;
			case IDC_BUTTONSERCH://检索下拉项
			{
				TCHAR str[256] = { 0 };
				GetDlgItemText(hDlg, IDC_EDITADD, str, sizeof(str));
				int i = bianlicombobox(hDlg, str);
				if (i)
				{		
					MessageBox(hDlg, TEXT("Congratulations 找到了"), TEXT("查找结果"), MB_OK | MB_ICONEXCLAMATION);		
				}	
				else
				{
					MessageBox(hDlg, TEXT("Sorry 没有找到"), TEXT("查找结果"), MB_OK | MB_ICONEXCLAMATION);
				}	
			}
			break;


			case IDOK:
			{
				MessageBox(hDlg, TEXT("确定键被按下"), TEXT("按键"), MB_OK);
			}
			break;
			case IDCANCEL:
			{
				MessageBox(hDlg, TEXT("取消键被按下"), TEXT("按键"), MB_OK);
				PostQuitMessage(0);
			}
			break;
		}
		break;
	case WM_SYSCOMMAND:
		if (wParam == SC_CLOSE)
		{
			PostQuitMessage(0);//退出
		}
		return 0;
	}
		
	return (INT_PTR)FALSE;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值