WinQueryLboxItemText
Appearance
This macro fills the buffer with the text of the indexed item. It returns the length of the text.
Syntax
WinQueryLboxItemText(hwndLbox, index, psz, cchMax)
Parameters
- hwndLbox (HWND) - Input
- List box handle.
- index (SHORT) - Input
- Index of the listbox item.
- psz (PSZ) - Input
- Pointer to a null terminated string.
- cchMax (SHORT) - Input
- Maximum number of characters allocated to the string.
- lRetTxtL (LONG) - returns
- Actual text length copied.
Remarks
This macro is defined as&colon.
#define WinQueryLboxItemText(hwndLbox, index, psz, cchMax) \ ((LONG)WinSendMsg(hwndLbox, \ LM_QUERYITEMTEXT, \ MPFROM2SHORT((index), (cchMax)), \ MPFROMP(psz)))
This macro requires the existence of a message queue.
Example Code
#define INCL_WINWINDOWMGR /* Or use INCL_WIN, INCL_PM, */ #include <os2.h> HWND hwndLbox; /* List box handle. */ SHORT index; /* Index of the listbox item. */ PSZ psz; /* Pointer to a null terminated string. */ SHORT cchMax; /* Maximum number of characters allocated to the string. */ LONG lRetTxtL; /* Actual text length copied. */ lRetTxtL = WinQueryLboxItemText(hwndLbox, index, psz, cchMax);
This example uses WinQueryLboxItemText to copy all of the list box items into a buffer.
#define INCL_WINLISTBOXES #define INCL_WINWINDOWMGR #include <OS2.H> LONG cWindows; char *szTemp; HWND hwndLB; SHORT maxchar, index = 0; cWindows = WinQueryLboxCount(hwndLB); /* allocate a buffer for cWindows items. */ DosAllocMem((PPVOID)&szTemp, (ULONG)cWindows*256*sizeof(char), PAG_READ | PAG_WRITE | PAG_COMMIT); /* loop through all of the items; copying each */ /* one the buffer. */ while (index <= cWindows) { maxchar = WinQueryLboxItemTextLength(hwndLB,index); WinQueryLboxItemText(hwndLB, index++, szTemp, maxchar); szTemp+=maxchar; /* increment pointer by number */ /* of bytes copied. */ }