LB_FINDSTRING
wParam = (WPARAM) indexStart; /* item before start of search */
lParam = (LPARAM) (LPCSTR) lpszFind; /* address of search string */
An application sends an LB_FINDSTRING message to find the first string in a list box that contains the specified prefix.
indexStart
Value of wParam. Specifies the zero-based index of the item before the first item to be searched. When the search reaches the bottom of the list box, it continues from the top of the list box back to the item specified by the indexStart parameter. If indexStart is –1, the entire list box is searched from the beginning.
lpszFind
Value of lParam. Points to the null-terminated string that contains the prefix to search for. The search is not case-sensitive, so this string can contain any combination of uppercase and lowercase letters.
The return value is the index of the matching item, or it is LB_ERR if the search was unsuccessful.
If the list box was created with an owner-drawn style but without the LBS_HASSTRINGS style, the action taken by LB_FINDSTRING depends on whether the LBS_SORT style is used. If LBS_SORT is used, WM_COMPAREITEM messages are sent to the owner of the list box to determine which item matches the specified string. Otherwise, LB_FINDSTRING attempts to match the doubleword value against the value of lpszFind.
This example searches for the string “my string” in a list box and copies it, if found, to the szBuf buffer:
char szBuf[20];
DWORD dwIndex;
dwIndex = SendDlgItemMessage(hdlg, ID_MYLISTBOX,
LB_FINDSTRING, 0, (LPARAM) ((LPCSTR) "my string"));
if (dwIndex != LB_ERR)
SendDlgItemMessage(hdlg, ID_MYLISTBOX,
LB_GETTEXT, (WPARAM) dwIndex, (LPARAM) ((LPCSTR) szBuf));