本文对ComboBox的各种函数进行了尝试。
#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)
{
HWND hwnd_combo = GetDlgItem(hwnd,IDC_COMBO);
ComboBox_InsertString(hwnd_combo,-1,TEXT("第三个"));
ComboBox_InsertString(hwnd_combo,-1,TEXT("第二个"));
ComboBox_InsertString(hwnd_combo,-1,TEXT("第一个"));
ComboBox_InsertString(hwnd_combo,-1,TEXT("第零个"));
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
HWND hwnd_combo = GetDlgItem(hwnd,IDC_COMBO);
switch(id)
{
case IDC_BUTTONADD:
{
TCHAR strin[256];
GetDlgItemText(hwnd,IDC_EDITIN,strin,sizeof(strin));//取内容
ComboBox_InsertString(hwnd_combo,-1,strin);//添加至ComboBox
SetDlgItemText(hwnd,IDC_EDITIN,TEXT(""));//清空输入文本框
}
break;
case IDC_BUTTONDEL:
{
int i = ComboBox_GetCurSel(hwnd_combo);//取被选中的索引
if(CB_ERR == i)//如果没有选任何项,则报错
{
MessageBox(hwnd,TEXT("你没有选中任何项"),TEXT("错误"),MB_OK|MB_ICONERROR);
return;
}
ComboBox_DeleteString(hwnd_combo,i);//删除选中项
}
break;
case IDC_BUTTONFIND:
{
TCHAR strToSearch[256];
GetDlgItemText(hwnd,IDC_EDITOUT,strToSearch,sizeof(strToSearch));//得到要查找的内容
int iCount = ComboBox_GetCount(hwnd_combo);
BOOL sFound = FALSE;
int i;
for(i=0;i<iCount;i++)//遍历各项,若与要查找的内容相同,则弹出“找到了”,并选中该内容
{
TCHAR str[256];
ComboBox_GetLBText(hwnd_combo,i,str);
if(lstrcmp(str,strToSearch)==0)
{
sFound = TRUE;
}
if(sFound)
{
ComboBox_SetCurSel(hwnd_combo,i);
MessageBox(hwnd,TEXT("找到了"),TEXT("消息"),MB_OK);
break;
}
}
if(FALSE == sFound)
{
MessageBox(hwnd,TEXT("没找到"),TEXT("报告"),MB_OK);
return;
}
}
break;
default:
break;
}
}
void Main_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
}
实现三个基本功能:
- 点击“增加”按钮,实现把左侧文本框中字符串加入到ComboBox中作为一个项;
- 点击“删除所选”按钮,删掉ComboBox正被选择的那一项;
- 点击查找,将所选项的序号写入左侧文本框中。