win32之组合框



组和框的创建
CreateWindowEx(0, L"COMBOBOX", L"Simple", WS_VISIBLE | WS_CHILD | CBS_SIMPLE, 50, 50, 100, 200, hWnd, (HMENU)1001, hInst, NULL);
CreateWindowEx(0, L"COMBOBOX", L"DropDown", WS_VISIBLE | WS_CHILD | CBS_DROPDOWN, 150, 50, 200, 200, hWnd, (HMENU)1002, hInst, NULL);
CreateWindowEx(0, L"COMBOBOX", L"DropList", WS_VISIBLE | WS_CHILD | CBS_DROPDOWNLIST, 250, 300, 300, 200, hWnd, (HMENU)1003, hInst, NULL);
组合框的添加
            HWND hSimple = GetDlgItem(hWnd, 1001);
HWND hDropDown = GetDlgItem(hWnd, 1002);
HWND hDropList = GetDlgItem(hWnd, 1003);
for (int i = 0; i < 100; i++)
{
TCHAR szText[256] = { 0 };
wsprintf(szText, L"Item%d", i);
SendMessage(hSimple, CB_ADDSTRING, 0, (LPARAM)szText);
SendMessage(hDropDown, CB_ADDSTRING, 0, (LPARAM)szText);
SendMessage(hDropList, CB_ADDSTRING, 0, (LPARAM)szText);
   }
组合框的删除:
 CB_RESETCONTENT  -- 清除所有项
    SendMessage(hComboBox,CB_RESETCONTENT,0,0);
 CB_DELETESTRING -- 删除指定项
 lParam: 0;
 wParam: 选项索引;
 eg:
   HWND hSimple = GetDlgItem(hWnd, 1001);
HWND hDropDown = GetDlgItem(hWnd, 1002);
HWND hDropList = GetDlgItem(hWnd, 1003);
  int ret = SendMessage(hSimple, CB_GETCURSEL, 0, 0);
  if (ret == CB_ERR )
  {
  MessageBox(NULL, L"...", L"Infor", MB_OK);
  }
  else
  {
  SendMessage(hSimple, CB_DELETESTRING, ret, 0);
  }
  ret = SendMessage(hDropDown, CB_GETCURSEL, 0, 0);
  if (ret == CB_ERR)
  {
  MessageBox(NULL, L"...", L"Infor", MB_OK);
  }
  else
  {
  SendMessage(hDropDown, CB_DELETESTRING, ret, 0);
  }
ret = SendMessage(hDropList, CB_GETCURSEL, 0, 0);
if (ret == CB_ERR)
{
MessageBox(NULL, L"...", L"Infor", MB_OK);
}
else
{
SendMessage(hDropList, CB_DELETESTRING, ret, 0);
}
}
 
查找和设定选定项


获得当前选项:
  CB_GETCURSEL:
  
  SendMessage(hwnd,CB_GETCURSEL,0,0);
  其返回值是索引.如果当前无选择项,则返回CB_ERR(-1);
设置当前选项:
  CB_SETCURSEL:
  设置索引为50的为当前选项...
  SendMessage(hSimple, CB_SETCURSEL, (WPARAM)50, 0);
  SendMessage(hDropDown, CB_SETCURSEL, (WPARAM)50, 0);
  SendMessage(hDropList, CB_SETCURSEL, (WPARAM)50, 0);
CB_FINDSTRING
  wParam   //指定从哪里开始 ,-1是从0开始
  lParam   //搜索的字符串.
  
  如果找到通过SendMessage返回,如果没有找到则返回-1;
  非精确匹配查找.但是不能粗
  
  
  HWND hSimple = GetDlgItem(hWnd, 1001);
int ret = SendMessage(hSimple, CB_FINDSTRING, -1, (LPARAM)L"Item50");
if (ret == CB_ERR)
{
MessageBox(NULL, L"没有匹配上", L"Infor", MB_OK);
}
else
{
TCHAR szText[256];
wsprintf(szText, L"%d", ret);
MessageBox(NULL, szText, L"Infor", MB_OK);
}
CB_GETLBTEXTLEN:
  SendMessage( 
  (HWND) hWnd,              // handle to destination window 
  CB_GETLBTEXTLEN,          // message to send
  (WPARAM) wParam,          // 索引.
  (LPARAM) lParam          // not used; must be zero
);
其长度通过SendMessage返回.
CB_GETLBTEXT:
  获取文本:
CB_SELECTSTRING: 设置并查找字符串.










--------------------------------------组合框的附加数据----------------------------------------




CB_SETITEMDATA:
 wParam -- 选项索引
 lParam -- 具体的附加数据
 
CB_GETITEMDATA: 
 
CBN_SELCHANGE,当选项改变时,会向父窗口发送该消息.以WM_COMMAND的形式通知父窗口.
CBN_EDITCHANGE, 当组合框内容改变时 会向父窗口发送该消息.












  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值