In het volgende voorbeeld demonstreert hoe een dialoogvenster vak procedure maakt u een keuzelijst met eenvoudige en vult deze met de namen van mensen op een softbalteam. Als een naam in de lijst is geselecteerd, wordt in het dialoogvenster extra informatie over de speler weergegeven. De volgende afbeelding ziet u het dialoogvenster.

De keuzelijst heeft de LBS_STANDARD stijl, een combinatie van LBS_SORT, LBS_NOTIFY, WS_VSCROLL en WS_BORDER. De code initialiseert het dialoogvenster tijdens het verwerken van het WM_INITDIALOG bericht. Voor elke naam die wordt weergegeven in de keuzelijst, stuurt de code een LB_ADDSTRING -bericht naar de keuzelijst. Door de LBN_SELCHANGE melding te verwerken, of de code ook controleren de selectie wordt gewijzigd.
#define BUFFER MAX_PATH
#define NAMELENGTH 15
#define POSITIONLENGTH 20
#define TEAMSIZE 15
typedef struct
{
TCHAR tchName[NAMELENGTH];
TCHAR tchPosition[POSITIONLENGTH];
int nGamesPlayed;
int nInningsPlayed;
double xBattingAverage;
TCHAR tchFoodName[NAMELENGTH];
} Player;
Player Roster[] =
{
{"Alan", "Center field", 17, 56, .375, "Cannelloni"},
{"Colin", "Pitcher", 26, 96, .456, "Lefse"},
{"Cindy", "Second base", 13, 58, .207, "Tequila"},
{"Dave", "First base", 28, 138, .508, "Suds"},
{"David", "Center field", 18, 101, .612, "Bok Choy"}
{"Jack", "Pitcher", 27, 110, .542, "Animal Crackers"},
{"Julie", "Right field", 22, 101, .509, "Mashed Potatoes"},
{"Karen", "Second base", 26, 140, .238, "Pez"},
{"Kathie", "Left field", 26, 127, .353, "Baba Ganouj"},
{"Matt", "Shortstop", 24, 112, .579, "Oats"},
{"Miriam", "Right field", 24, 112, .393, "Zotz"},
{"Pete", "Shortstop", 26, 90, .608, "Beet"},
{"Seth", "Center field", 20, 76, .407, "Otter Pop"},
{"Suzanna", "Catcher", 16, 53, .286, "Toast"},
{"Wendy", "Third base", 25, 154, .493, "Ham"},
};
BOOL APIENTRY DlgTeamProc(
HWND hDlg, // window handle to dialog box
UINT message, // type of message
UINT wParam, // message-specific information
LONG lParam) // message-specific information
{
TCHAR tchBuffer[BUFFER];
int nItem;
int i;
HWND hwndList;
switch (message)
{
case WM_INITDIALOG:
{
hwndList = GetDlgItem(hDlg, IDL_SOFTBALL);
// Initialize the list box (fill it with player names).
for (i = 0; i < TEAMSIZE; i++)
{
SendMessage(hwndList, LB_ADDSTRING, 0,
(LPARAM) Roster[i].tchName);
SendMessage(hwndList, LB_SETITEMDATA, i, (LPARAM) i);
}
SetFocus(hwndList);
return FALSE;
}
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDL_SOFTBALL:
switch (HIWORD(wParam))
{
case LBN_SELCHANGE:
// Show the selected player's statistics.
hwndList = GetDlgItem(hDlg, IDL_SOFTBALL);
nItem = SendMessage(hwndList, LB_GETCURSEL,
0, 0);
i = SendMessage(hwndList, LB_GETITEMDATA,
nItem, 0);
SetDlgItemText(hDlg, IDS_POS,
Roster[i].tchPosition);
SetDlgItemText(hDlg, IDS_GAME,
_itoa(Roster[i].nGamesPlayed,
tchBuffer, 10));
SetDlgItemText(hDlg, IDS_INN,
_itoa(Roster[i].nInningsPlayed,
tchBuffer, 10));
SetDlgItemText(hDlg, IDS_BA,
_gcvt(Roster[i].xBattingAverage,
3, tchBuffer));
SetDlgItemText(hDlg, IDS_FOOD,
Roster[i].tchFoodName);
return TRUE;
}
break;
case IDOK:
case IDCANCEL:
// Destroy the dialog box.
EndDialog(hDlg, TRUE);
return TRUE;
default:
return FALSE;
}
default:
return FALSE;
}
}