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;
}