На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

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);
возвращайтесь ВЕРНО;

умолчание:

обратная ЛОЖЬ;
}

умолчание: обратная ЛОЖЬ;
}
}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz