Basit liste kutusu oluşturma

Aşağıdaki örnek bir Voleybol Takımı kişilerin isimleri ile doldurur ve nasıl basit liste kutusu iletişim kutusunda yordam oluşturur gösterilmiştir. Listeden bir adı seçildiğinde, player hakkında ek bilgi iletişim kutusunda görüntülenir. İletişim kutusu aşağıda gösterilmiştir.

Liste kutusunda lbs_standard stili, lbs_sort, LBS_NOTIFY ws_vscroll ve ws_border kombinasyonu vardır. Kodu, WM_INITDIALOG ileti işlenirken iletişim kutusu başlatır. Liste kutusunda görüntülenen her ad için kodu liste kutusuna bir LB_ADDSTRING iletisi gönderir. lbn_selchange bildirim iletisi işleme kodu da seçim değiştiğinde izler.

#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; 
    } 
} 
 

Index