|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Creating a Simple List Box
The following example demonstrates how a dialog box procedure creates a simple list box and fills it with the names of people on a softball team. When a name in the list is selected, additional information about the player is displayed in the dialog box. The following illustration shows the dialog box.
The list box has the LBS_STANDARD style, a combination of LBS_SORT, LBS_NOTIFY, WS_VSCROLL, and WS_BORDER. The code initializes the dialog box while processing the WM_INITDIALOG message. For each name that appears in the list box, the code sends an LB_ADDSTRING message to the list box. By processing the LBN_SELCHANGE notification message, the code also keeps track of when the selection changes.
#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[] = { {"Pete", "shortstop", 26, 90, .608, "Rutabaga"}, {"Suzanna", "catcher", 16, 53, .286, "Toast"}, {"Jack", "pitcher", 27, 110, .542, "Animal Crackers"},
{"Karen", "second base", 26, 140, .238, "Pez"}, {"Dave", "first base", 28, 138, .508, "Suds"}, {"Wendy", "third base", 25, 154, .493, "Ham"}, {"Matt", "shortstop", 24, 112, .579, "Oats"}, {"Jenny", "right field", 22, 101, .509, "Mashed Potatoes"}, {"Seth", "left-center field", 20, 76, .407, "Otter Pop"}, {"Kathie", "left field", 26, 127, .353, "Baba Ganouj"}, {"Colin", "pitcher", 26, 96, .456, "Lefse"},
{"Penny", "right field", 24, 112, .393, "Zotz"}, {"Art", "left-center field", 17, 56, .375, "Cannelloni"}, {"Cindy", "second base", 13, 58, .207, "Tequila"}, {"David", "center field", 18, 101, .612, "Bok Choy"} }; /* * FUNCTION: DlgTeamProc(HWND, unsigned, UINT, LONG) * * PURPOSE: Dialog box for "BFG Softball Statistics" */ BOOL APIENTRY DlgTeamProc( HWND hDlg, /* window handle of 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; } }
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Создание Простого Ящика Списка
Следующий пример демонстрирует как диалоговая процедура ящика создает простой ящик списка и заполняет это именами людей в группе софтбола. Когда имя в списке - выбранная, дополнительная информация о плейере отображена в диалоговом блоке. Следующая иллюстрация показывает диалогового блока.
Блок списка имеет стиль LBS_STANDARD, комбинация LBS_SORT, LBS_NOTIFY, WS_VSCROLL, и WS_BORDER. Код инициализирует диалоговый блок при обработке сообщения WM_INITDIALOG. Для каждого имени, которое появляется в блоке списка, код посылает сообщение LB_ADDSTRING блоку списка. Обрабатывая сообщение уведомления LBN_SELCHANGE, код также следит когда выбор изменяется.
#define БУФЕР MAX_PATH #define NAMELENGTH 15 #define POSITIONLENGTH 20 #define TEAMSIZE 15 typedef struct { TCHAR tchName[NAMELENGTH]; TCHAR tchPosition[POSITIONLENGTH]; int nGamesPlayed; int nInningsPlayed; двойной xBattingAverage; TCHAR tchFoodName[NAMELENGTH]; } Плейер; Список Плейера[] = { {"Пит", "shortstop", 26, 90, .608, "Брюква"}, {"Suzanna", "ловушка", 16, 53, .286, "Тост"}, {"Гнездо", "кувшин", 27, 110, .542, "Печенье Животного"},
{"Karen", "База секунды", 26, 140, .238, "Pez"}, {"Дэйв", "база первого", 28, 138, .508, "Мыльная пена"}, {"Wendy", "третья база", 25, 154, .493, "Ветчина"}, {"Matt", "shortstop", 24, 112, .579, "Овес"}, {"Jenny", "область права", 22, 101, .509, "Размявшее Картофель"}, {"Seth", "более левый центр области", 20, 76, .407, "Выдра Выталкивает"}, {"Kathie", "оставившее область", 26, 127, .353, "Baba Ganouj"}, {"Colin", "кувшин", 26, 96, .456, "Lefse"},
{"Пенни", "область права", 24, 112, .393, "Zotz"}, {"Искусство", "более левый центр области", 17, 56, .375, "Cannelloni"}, {"Cindy", "база секунды", 13, 58, .207, "Текила"}, {"Дэвид", "область центра", 18, 101, .612, "Bok Choy"} }; /* * ФУНКЦИЯ: DlgTeamProc(HWND, без знака, UINT, ДОЛГО (ДЛИНОЙ)) * * ЦЕЛЬ: блок Диалога для "Статистики Софтбола BFG" */ BOOL APIENTRY DlgTeamProc( HWND hDlg, /* РУЧКА окна диалогового блока */
СООБЩЕНИЕ UINT, /* тип сообщения */ UINT wParam, /* сообщеняя-специфическая информация */ ДОЛГО (ДЛИНОЙ) lParam) /* сообщеняя-специфическая информация */ { TCHAR tchBuffer[BUFFER]; int nItem; int i; HWND hwndList; ключ (сообщение) { случай WM_INITDIALOG: { hwndList = GetDlgItem(hDlg, IDL_SOFTBALL); /* Инициализируйте блока списка (наполнитель это с именами плейера */
для (i = 0; я < TEAMSIZE; я++) { SendMessage Списка(hwndList, LB_ADDSTRING, 0, (LPARAM)[i].tchName); SendMessage(hwndList, LB_SETITEMDATA, Я, (LPARAM) я); } SetFocus(hwndList); обратная ЛОЖЬ; } случай WM_COMMAND: ключ (LOWORD(wParam)) { случай IDL_SOFTBALL: ключ (HIWORD(wParam)) {
случай LBN_SELCHANGE: /* Покажите выбранный игрок statistics. */ hwndList = GetDlgItem(hDlg, IDL_SOFTBALL); nItem = SendMessage(hwndList, LB_GETCURSEL, 0, 0); я = SendMessage(hwndList, LB_GETITEMDATA, nItem, 0); SetDlgItemText(hDlg, IDS_POS,
Список[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, СПИСОК[i].tchFoodName); возвращайтесь ВЕРНО; } прерывание; случай IDOK: случай IDCANCEL: /* Уничтожьте диалог box. */ EndDialog(hDlg, TRUE); возвращайтесь ВЕРНО; умолчание:
обратная ЛОЖЬ; } умолчание: обратная ЛОЖЬ; } }
|
|
|
|
| |